我需要获得具有这些条件的字段,我在SQL中的实际代码是:
function fetchTransMain($trans, $itemID){
foreach($trans as $key => $val){
if($val["ID"] == $itemID){
echo $val["trans"];
}
}
}
我实际上有这个:
SELECT archivo, fechadiario
FROM ri_diariodefotos
WHERE idproyecto=@projectId
AND fechadiario = (SELECT MAX(fechadiario)
FROM ri_diariodefotos
WHERE idproyecto=@projectId)
它实际上有效,但当我试图得到这个错误时
LINQ to Entities无法识别该方法 “System.Collections.Generic.List`1 [System.String] ToListString” 方法,并且此方法无法转换为商店表达式。
答案 0 :(得分:0)
如果我理解你,你想为每个项目获得Max(of Fechadiario)
。因此,您需要按projectid
分组数据:
var result = RI_DiariodeFotos
.Where(x=> x.Idproyecto==PROJECTID)
.GroupBy(x=> x.Idproyecto)
.Select(g=>new
{
ProjectId = g.Key,
Fechadiario = g.Max(f=>f.Fechadiario)
});
注意:强>
要在EF中使用它,您必须声明类如下:
public class ProjectStatistic
{
public int ProjectId {get;set;}
public int Fechadiario {get;set;}
}
然后,您必须在Enumerable<ProjectStatistic>
语句中的ProjectStatistic
关键字之后添加new
,将查询结果“抓取”到Select
。