来自sql的Lambda表达式

时间:2013-08-16 01:42:10

标签: c# asp.net sql linq lambda

我想在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'。存在显式转换(是   你错过了一个演员?)

2 个答案:

答案 0 :(得分:4)

您的问题是Select返回一个集合,您的方法返回一个实例。

假设g.HintModelSQL.puzzlecontent个实例,您应该在末尾添加FirstOrDefault以检索单个项目。

我错过的一点是你试图返回一个匿名类型的低位new { g.Hint },这是无效的。你需要返回一个具体的类型。

同样,假设g.HintModelSQL.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});
} 

这部分可以工作^