0

現在、Linq を使用して、データ テーブルから個別の値のリストを取得しています。次に、リストをループし、再び linq クエリを呼び出して、最初のリストの各値の値のリストを取得します。

_keyList = new SortedList<int, List<int>>();
var AUGroupList = ProcessSummaryData.AsEnumerable()
                  .Select(x => x.Field<int>("AUGroupID"))
                  .Distinct()
                  .ToList<int>();
foreach (var au in AUGroupList)
{
    var AUList = ProcessSummaryData.AsEnumerable()
                      .Where(x => x.Field<int>("AUGroupID") == au)
                      .Select(x => x.Field<int>("ActivityUnitID"))
                      .ToList<int>();
    _keyList.Add(au, AUList);
}

次に、対応する 2 番目のリストと共に、値を並べ替えられたリストに追加します。上記の 2 つのクエリを 1 つの Linq クエリに結合して、個別に呼び出す必要がないようにするにはどうすればよいですか?

4

2 に答える 2

2

次のようなことができるはずです。

var groupQuery = from d in ProcessSummary.AsEnumerable()
                 group d by new { Key = d.Field<int>("AUGroupID") } into g
                 select new { GroupID = g.Key, Values = g.Distinct().ToList() }; 

次に、をループしてgroupQuery、並べ替えられたリストにデータを入力できます。Keyプロパティにはグループ ID が含まれ、プロパティValuesには個別の値のリストがあります。

于 2012-11-21T02:30:56.387 に答える
1

これを試しましたか?

var _keyList = new SortedList<int, List<int>>();
var AUGroupList = ProcessSummaryData.AsEnumerable()
                  .Select(x => x.Field<int>("AUGroupID"))
                  .Distinct()
                     .Where(x => x.Field<int>("AUGroupID") == au)
                     .Select(x => x.Field<int>("ActivityUnitID"))
                     .ToList<int>();
    _keyList.Add(au, AUList);
}

プロバイダーはそれに対処する必要があります。そうでない場合は、他の方法がいくつかあります。

于 2012-11-21T02:24:08.603 に答える