【问题标题】:LINQ doesn't work with a "select isnull" query..? [duplicate]LINQ 不适用于“select isnull”查询..? [复制]
【发布时间】:2012-06-16 13:10:30
【问题描述】:

可能重复:
Equivalent of SQL ISNULL in LINQ?
Using IsNull or select COALESCE in Linq..?

我已经在 LINQ 中尝试过这个查询:

   string query = @"SELECT ISNULL(P.firstname, s.firstname) AS Expr1,ISNULL(P.lastname,
  s.lastname) AS Expr2 FROM comment AS C LEFT OUTER JOIN professor AS P ON P.ID =   

  C.PID LEFT OUTER JOIN student AS s ON s.ID = C.SID

  WHERE (C.VID = 2)";

        ArrayList allNames=null;
        using (var context = new NewsReaderEntities())
        {
            ObjectQuery<string> results = context.CreateQuery<string>(query);
         //   ObjectQuery<string> results1 = context.CreateQuery<string>
             (query1,parameters);
            foreach (string result in results )
            {
                allNames.Add(result);

            }
        }

        return allNames;



    }

但它返回错误:

linq 'ISNULL' 无法解析为有效的类型或函数。靠近 简单标识符,

我也试过这个查询:

SELECT COALESCE(p.firstname, s.firstname), COALESCE(p.lastname, s.lastname)
  FROM comment c
  LEFT JOIN Professor p
    ON c.pid = p.id
  LEFT JOIN Student s
    ON c.sid = s.id
 WHERE c.vid = 2

这也会引发错误。

两者都可以在 SQL 管理中正常工作。有什么想法吗?

【问题讨论】:

标签: sql sql-server linq linq-to-sql linq-to-entities


【解决方案1】:

看这个例子:

var query = from p in Pets select p;
if (OwnerID != null) query = query.Where(x => x.OwnerID == OwnerID);
if (AnotherID != null) query = query.Where(x => x.AnotherID == AnotherID);
if (TypeID != null) query = query.Where(x => x.TypeID == TypeID);

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 2021-02-23
    • 2017-04-01
    • 2017-08-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多