我想在lambda中这样做:
从[tablename]中选择提示,其中Answer ='answer';
这是我到目前为止所尝试的:
public ModelSQL.puzzlecontent GetAcrossClue(string answer)
{
return context.puzzlecontents.Where(c => c.Answer.Equals(answer)).Select( g => new {g.Hint});
}
错误说:
无法隐式转换类型 'System.Linq.IQueryable'来 'iStellar.ModelSQL.puzzlecontent'。存在显式转换(是 你错过了一个演员?)
答案 0 :(得分:4)
您的问题是Select
返回一个集合,您的方法返回一个实例。
假设g.Hint
是ModelSQL.puzzlecontent
个实例,您应该在末尾添加FirstOrDefault
以检索单个项目。
我错过的一点是你试图返回一个匿名类型的低位new { g.Hint }
,这是无效的。你需要返回一个具体的类型。
同样,假设g.Hint
是ModelSQL.puzzlecontent
个实例,您应该
return context.puzzlecontents
.Where(c => c.Answer.Equals(answer))
.Select(g => g.Hint)
.FirstOrDefault();
答案 1 :(得分:0)
public var GetAcrossClue(string answer)
{
return context.puzzlecontents.Where(c => c.Answer.Equals(answer)).Select( g => new {g.Hint});
}
忽略这一部分,谢谢克劳迪奥。现在我能说什么呢?
或
public ModelSQL.puzzlecontent GetAcrossClue(string answer)
{
return context.puzzlecontents.Where(c => c.Answer.Equals(answer)).Select( g => new puzzlecontent{property1 = value,property2 = etc});
}
这部分可以工作^