3

私が欲しいものは、コードでよりよく説明されています。私はこのクエリを持っています:

var items = context.Items.GroupBy(g => new {g.Name, g.Model})
                .Where(/*...*/) 
                .Select(i => new ItemModel{
                                Name=g.Key.Name,
                                SerialNumber = g.FirstOrDefault().SerialNumber //<-- here
                                     });

キーで使用されていないシリアル番号またはその他のプロパティを取得するより良い方法はありますか? 私が考えることができる唯一の方法は、FirstOrDefault を使用することです。

4

4 に答える 4

0

すべてのデータが必要なので、すべてのグループ データを (KeyValuePair の) 値に格納する必要があります。

目の前に正確な構文はありませんが、次のようになります。

/* ... */
.Select(g => new {
                     Key = g.key,
                     Values = g
                 });

その後、 をループしてグループKeyを取得できますNameValuesそのループの中に、あなたを取得するためのループを含めますItemModel(それは1つの要素を含むオブジェクトだと思います)。

次のようになります。

foreach (var g in items) 
{ 
    Console.WriteLine("List of SerialNumber in {0} group", g.Key); 
    foreach (var i in g.Values) 
    { 
        Console.WriteLine(i.SerialNumber); 
    } 
} 

お役に立てれば!

さまざまなクエリのヘルプについては、 Linq 101 のサンプルを参照してください。

于 2013-04-10T02:18:44.220 に答える