【问题标题】:linq Command not getting the answer for DBlinq 命令没有得到 DB 的答案
【发布时间】:2016-09-06 11:21:25
【问题描述】:

我的数据库(WebSiteUsers)中有一个表(UserQuestions),其中包含作为主键的 QuestionID 字段和包含作为其值询问的 Questions 的 QuestionContext 字段。 现在我想要一个文本框,通过获取 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] WHERE CAST([Extent1].[QuestiuonID] AS nvarchar(max)) = @p__linq__0

【问题讨论】:

  • 发布UserQuestion 课程会有所帮助。还有正确的标签(EF,哪个版本等)
  • UserQuestion 是我数据库中的一个表 这是该表:创建表 UserQuestion (QuestiuonID int Primary Key identity, UserID uniqueIdentifier 外键引用 aspnet_Users(UserId), QuestionTitle Nvarchar(max), QuestionContext nvarchar(最大),DateAsked 日期时间)

标签: linq


【解决方案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 属性的匿名对象。

【讨论】:

  • 就是这样。 FirstOrDefault 解决了这个问题。那你
猜你喜欢
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 2020-01-06
相关资源
最近更新 更多