0

を受け取り、をグループ化してList<Bar>返すメソッドを設計しています。私の推測では、List.Add で Aggregate を使用する必要があると思いますが、ラムダと Linq の構文についてはかなり初心者です。<List>BarGroupBar.barName

これまでの私のコード:

public class BarGroup
{
   public string barName;
   public List<Bar> barList;
}

public class Bar
{
   public string barName;
   public string fooDetails;

   public Bar(string b, string f)
   {
       this.barName = b;
       this.fooDetails = f;
   }
}

void Main()
{
    Bar bar1 = new Bar("BarGroup1","Bar1");
    Bar bar2 = new Bar("BarGroup1","Bar2");
    Bar bar3 = new Bar("BarGroup2", "Bar3");
    Bar bar4 = new Bar("BarGroup2", "Bar4");

    List<Bar> bars = new List<Bar> { bar1, bar2, bar3, bar4 };

    var barGrouped = from b in bars
                group b by b.barName into g
                select new BarGroup()
                {
                    barName = g.Key, 
                    barList = bars
                };

    Console.WriteLine(barGrouped);
}

LinqPad でこれを試すと、次の結果が得られます。

IEnumerable<BarGroup> (2 items)
barName     barList 
BarGroup1   List<Bar> (4 items)
            barName    fooDetails 
            BarGroup1  Bar1 
            BarGroup1  Bar2 
            BarGroup2  Bar3 
            BarGroup2  Bar4 

BarGroup2   List<Bar> (4 items)
            barName    fooDetails 
            BarGroup1  Bar1 
            BarGroup1  Bar2 
            BarGroup2  Bar3 
            BarGroup2  Bar4 

しかし、私が探しているのは以下です:

IEnumerable<BarGroup> (2 items)
barName     barList 
BarGroup1   List<Bar> (4 items)
            barName    fooDetails 
            BarGroup1  Bar1 
            BarGroup1  Bar2 

BarGroup2   List<Bar> (4 items)
            barName    fooDetails 
            BarGroup2  Bar3 
            BarGroup2  Bar4 

この種の分割には Linq が最良の選択であると想定しましたが、同じタスクを達成する他の方法を受け入れます。

4

1 に答える 1

1

試す

var barGrouped = from b in bars
            group b by b.barName into g
            select new BarGroup()
            {
                barName = g.Key, 
                barList = g.ToList()
            };

グループIEnumerable<Bar>化基準を満たすグループです。バーは元のコレクションであり、これが BarGroups ですべてのアイテムを取得する理由です。

于 2013-04-07T02:18:52.917 に答える