[英]Grouping data with Linq or not possible?
我有一個具體對象列表。 一些需要分析以決定將保留哪一個(當該組包含多於1個事件時)。
這是一個簡化的示例:
List<MyObject> arrayObject = new List<MyObject>();
arrayObject.Add(new MyObject { Id = 1, Name = "Test1", Category = "Cat1"});
arrayObject.Add(new MyObject { Id = 2, Name = "Test2", Category = "Cat2" });
arrayObject.Add(new MyObject { Id = 2, Name = "Test2", Category = "Cat3" });
這僅需要在分析的結尾:
arrayObject.Add(new MyObject { Id = 1, Name = "Test1", Category = "Cat1"});
arrayObject.Add(new MyObject { Id = 2, Name = "Test2", Category = "Cat3" });
如您所見,帶有Cat2的Id2消失了,因為業務邏輯將其取消了。 因此,應該做的是能夠獲得具有多個類別的對象並對其應用一種邏輯。
這是我到目前為止的內容:
List<MyObject> arrayObject = new List<MyObject>();
arrayObject.Add(new MyObject { Id = 1, Name = "Test1", Category = "Cat1"});
arrayObject.Add(new MyObject { Id = 2, Name = "Test2", Category = "Cat2" });
arrayObject.Add(new MyObject { Id = 2, Name = "Test2", Category = "Cat3" });
var filtered = from arrayObject1 in arrayObject
group arrayObject by new { arrayObject1.Id, arrayObject1.Name }
into g
select new { KKey = g.Key, Obj = g };
foreach(var c in filtered)
{
Console.WriteLine(c.KKey + ":" + c.Obj.Count());
foreach (var cc in c.Obj)
{
//Put some Business Logic here to get only 1... but to simplify will just print
Console.WriteLine("--->" + cc);
}
}
問題是 1)cc的類型不是MyObject,其次,我必須通過新方法獲取組中的所有屬性...我可能有幾個對象會有所不同。
Linq可能嗎? 原因,我可以在不使用Linq的情況下做到這一點...但是我正在嘗試盡可能多地應用此框架(3.5)的新功能。
問題出在那行說:
group arrayObject by
應該說:
group arrayObject1 by
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.