我的数据库(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
答案 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
属性的匿名对象。