【问题标题】:Lambda expression helpLambda 表达式帮助
【发布时间】:2011-06-15 12:32:56
【问题描述】:

我有一个如何编写 lambda 表达式的问题,我让它在这样的 mssql 查询中工作:

SELECT KUNDNR 
FROM halldb.dbo.KUND
wWHERE NOT EXISTS 
(
    SELECT KundID 
    FROM halldb.dbo.KundInfo 
    WHERE KUNDNR = CONVERT(Varchar(50), KundInfo.KundID)
)
ORDER BY KUNDNR

我尝试使用 lambda 表达式是这样的:

db.KUNDs.Select(x => x).Except(db.KundInfos.Select(x => x));

但由于 KUNDs 和 KundInfo 是两种不同类型的对象,它们不起作用……我可以这样:

db.KUNDs.Select(x => x.KUNDNR).Except(db.KundInfos.Select(x => x.KundID.ToString()));

但是当我真的想得到一个带有 KUNDs 对象的列表时,这只会给我一个带有 KUNDs.KUNDNR 字符串的列表。

我该怎么做?

非常感谢您的帮助!

【问题讨论】:

    标签: c# linq lambda expression


    【解决方案1】:
    db.KUNDs.Where(k => !db.KundInfos.Any(ki => k.KUNDNR == ki.KundID.ToString()))
            .OrderBy(k => k.KUNDNR);
    

    【讨论】:

    • 抛出错误“'bool' 不包含'OrderBy' 的定义,并且找不到接受'bool' 类型的第一个参数的扩展方法'OrderBy'”
    • .OrderBy(k => k.KUNDNR) 之前缺少右括号。抱歉,OrderBy( 应该应用于Where( 的结果。
    • 是的,我注意到您的回复后才开始使用它,感谢您的帮助,我一直在为此苦苦挣扎!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多