0
我有一個具體對象列表。有些需要進行分析,以決定保留哪一個(當該組包含多於一次的情況)。Linq的數據分組還是不可能?
下面是一個簡單的例子:
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)。謝謝
噢,我的!不行。你有一個想法,可以讓我不必通過新的{arrayObject1.Id,arrayObject1.Name}添加組arrayObject1中的所有字段。事實上,真正的物體有幾個屬性。沒有辦法通過「除x之外的所有字段」進行分組嗎? – 2009-02-12 15:04:06