【问题标题】:asp.net query c# errorasp.net查询c#错误
【发布时间】:2017-09-30 00:58:03
【问题描述】:

我正在使用 ASP.NET,我尝试更改标签文本并从数据库中获取值。 这就是我所做的。

首先我添加数据库,然后创建一个 linq,然后我使用查询来加载它,但它不起作用。

这是查询代码

protected void Page_Load(object sender, EventArgs e)
{
    DataClasses1DataContext db = new DataClasses1DataContext();
    var q = from dc in db.topboxes
            where dc.id == (1)
            select dc;
    Lmain11.Text = q.ToString();
}

这就是我得到的标签文本

SELECT [t0].[id], [t0].[title], [t0].[dc], [t0].[adminid] FROM [dbo].[topbox] AS [t0] WHERE [t0 ].[id] = @p0

谁能告诉我该怎么做?这不是我要打印的值

当我想从数据库机顶盒where id = 1 获取 dc 时,我也尝试在 where 行中不带 () 的代码。

我的数据也不为空

【问题讨论】:

    标签: c# asp.net linq


    【解决方案1】:

    Linq 查询返回 IEnumerable<T>,并且您希望访问集合中的特定项目,以访问特定属性。使用FirstOrDefault()

    DataClasses1DataContext db = new DataClasses1DataContext();
    var q = (from dc in db.topboxes
             where dc.id == 1
             select dc).FirstOrDefault();
    
    Lmain11.Text = q?.SomeProperty;
    

    FirstOrDefault 可能会返回 default(T) 如果在查询中没有找到。在您的情况下,默认值为null。使用 C# 6 ?. 运算符安全地访问所需的属性

    在 linq-2-sql 查询上使用 .ToString() 将为您提供正在生成的 sql - 当您想查看幕后情况时非常棒:)

    【讨论】:

    • 感谢您的回答,我的数据是别的东西,但现在它向我显示了一个文本 myprojectname.topbox 是我得到的。
    • @ArsalanAhmadi q 可以为空,如果 db.topboxes 中的任何内容都没有 id1
    • @GiladGreen 我没有考虑过第二次执行,现在我检查了参考代码。谢谢+1,我学到了新东西。
    • 不用担心我会删除答案,这很愚蠢。
    • @mybirthname - 顺便说一句 - 真棒图片:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多