1

デバイスのリストを MAC アドレスでグループ化しようとしています。これを linqpad で試してみましたが、正常に動作します。ただし、エンティティ フレームワークでこれを実行しようとすると、「指定されたメソッドはサポートされていません」というエラーが表示されます。

これが私のコードです:

var db = new centraliteEntitiews();

var network = from n in db.infoes
              where (n.state != 2) || (n.nodeid != 0)
              orderby n.time
              group n by n.mac into g
              select g.FirstOrDefault();
return View(network);

ビューに送信するオブジェクトのリストを返したいと思います。

MacAddress 状態 nodeid 稼働時間など

4

2 に答える 2

1

これを試して...

var network = db.infoes
  .Where(n => (n.state != 2) || (n.nodeid != 0))
  .GroupBy(n => n.mac)
  .SelectMany(g => g.OrderBy(n => n.time).First()) // sort within groups instead of all inputs, select info ungrouped (1 from each)
  .ToList() // to memory
  .SortBy(n => n.time) // sort results (between groups)
  .ToList(); // to memory
于 2012-06-26T16:43:39.027 に答える
0

それがサポートされていないと仮定するとFirstOrDefault()、単に に変更してみることができますFirst()。結局のところ、各グループに少なくとも 1 つの要素があることはわかっています。そうでなければ、グループは存在しません。

于 2012-06-26T16:22:21.590 に答える