c#Linq select联接选择组。

| 我有此MS-SQL语句:
SELECT cv.id FROM ContactValue cv
INNER JOIN (
        SELECT mainId, max(version) as v
        FROM ContactValue
        WHERE version <= $Version(int)
        GROUP BY mainId
) 
AS t ON t.mainId = cv.mainId AND t.v = cv.version 
WHERE cv.contact_id = $ContactID(int) 
      AND cv.isActive = 1 
      ORDER BY sort\'
并希望在linq中实现。 我确实使上面的查询分为多个查询,但执行起来并不很快。 是否存在任何linq到linq的联接 我的C#代码:
            var groupMax = from cv in db.ContactValue
                           where cv.contact_id == ContactID && cv.version <= Version
                           orderby cv.sort
                           group cv by cv.mainId into gcv
                           select new { mainID = gcv.Key, version = gcv.Max(cv => cv.version) };

            foreach (var data in groupMax.ToList())
            {
                var Query = from cv in db.ContactValue
                            where cv.contact_id == ContactID && cv.mainId == data.mainID && cv.version == data.version && cv.isActive == true
                            select cv;

                if (Query.Count() > 0)
                {
                    ContactValue tmp = Query.First();
                }
            }
我想用1-2个查询而不是1个查询来获取所有联系人,然后为每个联系人使用另一个查询... 请帮我 !     
已邀请:
        是的,Linq to SQL确实实现了内部联接:
var groupMax =
    from cv in db.ContactValue
    where cv.contact_id == ContactID && cv.version <= Version
    orderby cv.sort
    group cv by cv.mainId into gcv
    select new { mainID = gcv.Key, version = gcv.Max(cv => cv.version) };

var res =
    from cv in db.ContactValue
    join gm in groupMax on cv.version equals gm.version
    where cv.contact_id == ContactID && cv.isActive
    orderby cv.version ascending /*for example*/
    select cv
    
        受保护的无效rptPriceRachiveBind()         {
        using (MyEntities ctx = new MyEntities())
        {


            var catRef = Convert.ToInt32(Request.QueryString[\"CategoryRef\"]);
            var prodCounts = (
          from A in ctx.Products
          join B in ctx.ProductPrices
              on A.ProductId equals B.ProductRef
          where A.CategoryRef == catRef

          group A by new { A.Name,B.ProductRef } into catGp

          select
              new
              {
                 catGp.Key.ProductRef,
                  catGp.Key.Name,
                  proIdCount = catGp.Count()

              }).ToList();

              Repeater1.DataSource = prodCounts;

            Repeater1.DataBind();
        }
    

要回复问题请先登录注册