linq命令没有得到DB的答案

时间:2016-09-06 11:21:25

标签: linq

我的数据库(WebSiteUsers)中有一个表(UserQuestions),其中包含QuestionID字段作为主键,QuestionContext字段包含要求作为其值的问题。 现在我想要一个textBox,通过获取QuestionID向我显示QuestionContext值。 我使用了这些linq命令,但没有一个给我正确答案:

string Questioncontext = new WebSiteUsersEntities().UserQuestions.Where(p => p.QuestiuonID.ToString() == QuestionID).Select(p => new { p.QuestionContext}).ToString();
    string Questionx = (from q in new WebSiteUsersEntities().UserQuestions where q.QuestiuonID.ToString() == QuestionID select q.QuestionContext).ToString(); 

    QuestionCntxt.Text = Questionx;

结果是这样的:

选择     [Extent1]。[QuestionContext] AS [QuestionContext]     FROM [dbo]。[UserQuestion] AS [Extent1]     在哪里([Extent1]。[QuestiuonID] AS nvarchar(max))= @ p__linq__0

1 个答案:

答案 0 :(得分:1)

我猜您的QuestionID变量的类型为string,而数据库列的类型为int

所以而不是使用

q.QuestiuonID.ToString() == QuestionID

查询中的条件,将变量转换为int并将其用作条件。

同样ToString只提供SQL查询文本,而不是结果。如果您预期会有多个结果,请使用ToList;如果您预期会有一个或一个结果,请使用FirstOrDefault

var questionID = int.Parse(QuestionID);
string Questioncontext = new WebSiteUsersEntities().UserQuestions
    .Where(p => p.QuestiuonID == questionID)
    .Select(p => p.QuestionContext)
    .FirstOrDefault();

请注意,我还更改了select以直接返回QuestionContext字符串,而不是具有QuestionContext属性的匿名对象。