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