从每个组实体框架中选择前1名

时间:2012-06-26 16:20:50

标签: c# asp.net entity

我正在尝试使用mac地址对设备列表进行分组。我在linqpad中尝试了这个,它运行成功。但是,当我尝试在Entity框架中运行它时,我收到一条错误消息“不支持指定的方法。”

这是我的代码:

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正常运行时间等

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

假设它FirstOrDefault()不受支持,您可以尝试将其更改为First()。毕竟,你知道每组中至少有一个元素,否则该组将不存在。