我使用以下代码获取状态。我收到了错误"方法' System.String GetState(int32)'没有支持SQL的翻译"。请让我知道我在哪里做错了。
public IQueryable<ViewModel> GetResult()
{
IQueryable<ViewModel> result;
if (isDestinationSite)
{
result = (from table1 in this.db.tblTable1
select new ViewModel
{
State= this.GetState(table1.PersonUID),
});
}
private string GetState(int PersonUID)
{
using ( PersonPref pref = new PersonPref ())
{
pref .selectPref(ApplicationCode.MyApp, PersonPref .preference);
if (pref.PesronValue== "True")
{
return "Successfull";
}
else
{
return "Failure";
}
}
}
答案 0 :(得分:2)
SQL对您的函数一无所知,因此您只需将其移到linq查询之外。
List<ViewModel> result;
var personUID = (from table1 in this.db.tblTable1 select table1.PersonUID).ToList();
foreach (var id in personUID)
{
result.Add(new ViewModel { State = GetState(id) });
}
答案 1 :(得分:0)
您可以使用AsEnumerable
编写迭代查询,然后执行以下选择:
result = (from table1 in this.db.tblTable1
.AsEnumerable()
select new ViewModel
{
State= this.GetState(table1.PersonUID),
});