我有一个表用户(ID,名称....),项目(ID,名称,时间戳,IsFavorite ...),Projects_Favoite(UserID,ProjectID)
我尝试检查每个projekt是否有当前用户的行。如果有一行,我想在我的项目中设置“IsFavorite”,否则为false。
我并列:
for(int i = 0; i <= erg.Count();i++)
{
if (erg.ElementAt(i).User11.Any(u => u.Guid == ID) == true)
erg.ElementAt(i).SetFavorite = true;
}
但是没有办法使用ElementAt,因为它无法转换为SQL。 所以我试过了:
for(int i = 0; i <= erg.Count();i++)
{
if (erg.Take(i).Last().User11.Any(u => u.Guid == ID) == true)
erg.Take(i).Last().SetFavorite = true;
}
这里也有同样的问题,所以我试过了:
foreach (Project project in erg)
{
if (project.User11.Any(u => u.Guid == ID))
project.SetFavorite = true;
}
存在同样的问题。有没有办法实现ElementAt?
答案 0 :(得分:0)
你应该可以这样做:
foreach (Project project in erg.Where(p => p.User11.Any(u => u.Guid == ID))
.ToList())
project.SetFavorite = true;
}
答案 1 :(得分:0)
假设erg是IQuerable
而不能使用ElementAt,因为它不受支持(http://msdn.microsoft.com/en-us/library/bb399342.aspx检查操作员没有翻译部分),你可以在列表中使用它,但当然您将失去延迟查询的好处。
尝试使用Skip
代替
var whatyouwant = erg.Skip(index).First();
通过查看堆栈跟踪(虽然不能读取德语),看起来SetFavorite列有问题。首先尝试删除此位:
project.SetFavorite = true;
然后检查您的模型列是否与数据库中的内容匹配。