2012-06-12 96 views
1

幫助中找到的LINQ等效於以下SQL查詢:需要的LINQ相當於

select sum(weight) from (
select weight from pers p 
join list l on l.persindex= p.persindex 
group by p.persindex,weight) a 
+5

那你試試這麼遠嗎? –

+0

不要忘記標記爲接受,如果你有你想要的信息.. –

+0

我已經更新了我的答案與vb.net版本看看它... –

回答

-1

VB.NET版本

Dim customerList = From p In pers 
        Group Join l In list On 
        p.persindex Equals l.persindex 
        Into joineddata = Group, 
         TotalOweight = Sum(p.weight) 
        Select p.persindex, TotalOweight 

嘗試:Linquer SQL to LINQ convertion toolenter image description here

from p in pers 
joins l in list on l.persindex equals p.persindex 
group by new {p.persindex,l.weight } into grp 
select new { sum = grp.sum(x=>x.weight)} 
+0

我在vb.net使用此。它與vb.net不同嗎? – user1451208

+0

下面是我現在正在使用的查詢,它跳過一些值(相同的權重) Double =(從p入行加入l入列表p(「persindex」)等於l(「persindex」)選擇CDbl(p(「 「)))Distinct.Sum() 我試過你查詢但得到錯誤TotalOweight =總和(p.weight) – user1451208

+0

@ user1451208 - 現在我混淆了你真正想要的.........沒有得到你在所有 –

0
from p in context.pers 
join l in context.list on l.persindex equals p.persindex 
group by new 
{  p.persindex, 
     l.weight 
} into myGroup 
select new() 
{  Key = myGroup.Key, 
     GroupSum = myGroup.sum(x=>x.weight) 
} 
0

我想這就是你需要:

public int CalcWeight(IEnumerable<Person> pers, IEnumerable<Person> list) 
{ 
    return 
     pers 
     .Join(list, p=>p.PersIndex, l=>l.PersIndex, (p, l) => new {p.PersIndex, l.Weight}) 
     .GroupBy(a => new {a.PersIndex, a.Weight}) 
     .Sum(group=>group.Key.Weight); 
} 

數據類人是decalerd這樣的:

public class Person 
{ 
    public int PersIndex; 
    public int Weight; 
}