簡體   English   中英

使用Linq分組數據還是不可能?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM