[英]Group items and count
我的桌子如下
Main_ID | Child_ID | Activity |
1 |1 | Start
1 |2 | Stop
1 |3 | Stop
2 |1 | Start
2 |3 | Stop
我正在尋找的是
Main_ID | Start | Stop
1 |1 |2
2 |1 |1
因此,在第一列中,我想要水平列出所有Main_Ids和不同的活動。 之后,我想在Main_ID的每個活動下顯示不同的Child_Ids的計數。
我試過的是
var result = from q in db.Table
where q.Child_ID != null
group 1 by new { q.Main_ID,q.Child_ID, q.Activity } into g
select new MyList
{
Main_ID = g.Key.Main_ID,
Child_ID = g.Key.Child_ID,
Activity = g.Key.Activity,
Count = g.Count()
}
into p orderby p.Main_ID,p.Child_ID select p;
但有了這個,我沒有得到我所說的。
我使用以下內容實現了Child_ID
var result2 = result.GroupBy(x => x.Child_ID)
.Select(grp => new MyList2
{
Child_ID = grp.Key,
StartCount = grp.Where(x => x.Activity == "Start")
.Select(x => x.Count).Cast<Int32>().FirstOrDefault(),
StopCount = grp.Where(x => x.Activity == "Stop")
.Select(x => x.Count).Cast<Int32>().FirstOrDefault()
});
不知道如何針對Main_ID顯示它
考慮這個課程:
public class Foo
{
public int Main_ID {get;set;}
public int Child_ID {get;set;}
public string Activity {get;set;}
}
有了這些數據:
var ls=new List<Foo>
{
new Foo{Main_ID=1,Child_ID=1,Activity="Start"},
new Foo{Main_ID=1,Child_ID=2,Activity="Stop"},
new Foo{Main_ID=1,Child_ID=3,Activity="Stop"},
new Foo{Main_ID=2,Child_ID=1,Activity="Start"},
new Foo{Main_ID=2,Child_ID=3,Activity="Stop"},
};
你可以這樣做:
var result = ls
.GroupBy (g =>g.Main_ID)
.Select (g =>new
{
Main_ID = g.Key,
Start = g.Where(s=>s.Actvity == "Start").Select(x => x.Child_ID).Distinct().Count(),
Stop = g.Where(s=>s.Actvity == "Stop").Select(x => x.Child_ID).Distinct().Count(),
}
).ToList();
結果:
Main_ID Start Stop
1 1 2
2 1 1
所有,
謝謝你的幫助。
我可以使用以下內容
var v = from q in myTable
where q.Child_ID != null
orderby q.ModifiedDate descending
select q;
var result2 = v
.GroupBy(g => new
{
g.Main_ID
})
.Select(grp => new MyClass
{
Main_ID = grp.Key.Main_ID,
StartCount = grp.Where(x=> x.Activity == "Start").Select(x => x.Child_ID).Distinct().Count(),
StopCount = grp.Where(x => x.Activity == "Stop").Select(x => x.Child_ID).Distinct().Count()
});
我正在使用這個獲得預期的resuts。
現在; 我想知道這是否是正確的方法,如果兩個查詢可以合並。
由於它有代碼,沒有使用評論發布; 對不起:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.