?: LINQ 查询中的运算符

2024-01-10

  • 如何在 LINQ 查询的 SELECT 子句中使用 ?: 运算符?如果这做不到,我该如何模仿呢?目标是在我的 select 子句中获得一个 CASE 块。正如您可能怀疑的那样,我收到错误:无效的匿名类型成员声明符。匿名类型成员必须使用成员赋值、简单名称或成员访问来声明。

  • 这是正确的方法,还是充分的方法,可以说“从内部连接 ​​i on a.ipid=i.id 内部连接 ​​u on i.uid=u.id”?如果没有,请提供一份。谢谢。

    var query =
        from a in db.tblActivities
        from i in db.tblIPs
        from u in db.tblUsers 
        select new {
            u.UserName == null
                ? i.Address
                : u.UserName,
            a.Request,
            a.DateTime };
    

创建匿名类型(在不指定类型的情况下使用“新”类型执行的操作)时,必须为每个属性指定成员名称。从您的示例来看,它看起来像这样:(还修复了您的连接)

var query = from a in db.tblActivities
            join i in db.tblIPs on a.ipid equals i.id
            join u in db.tblUsers on i.uid equals u.id
            select new {
               UserName = (u.UserName ?? i.Address),
               Request = a.Request,
               Date = a.DateTime
            };

您也可以按照自己的方式设置用户名:

UserName = (u.UserName == null) ? i.Address : u.UserName,

但是??操作符更加简洁。它类似于 SQL 中的“isnull”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

?: LINQ 查询中的运算符 的相关文章

随机推荐