linq - linq“不在”查询无法解决我的期望

标签 linq

我在Linq中编写了以下查询:

var res =  dc.TransactionLoggings
             .Where(
                x => !dc.TrsMessages(y => y.DocId != x.DocId)
              ).Select(x => x.CCHMessage).ToList();


解决以下问题:

SELECT [t0].[CCHMessage]
FROM [dbo].[TransactionLogging] AS [t0]
WHERE NOT (EXISTS(
    SELECT NULL AS [EMPTY]
    FROM [dbo].[TrsMessages] AS [t1]
    WHERE [t1].[DocId] <> [t0].[DocId]
    ))


总是返回null

我要写的Basiaclly内容如下:

Select cchmessage
from transactionlogging
where docid not in (select docid from trsmessages)


关于我的LINQ语句有什么问题的任何建议吗?

最佳答案

var res =  dc.TransactionLoggings
             .Where(tl => !dc.TrsMessages.Any(trsm=> trsm.DocId == tl.DocId))
             .Select(x => x.CCHMessage).ToList();


要么

   var trsMessagesDocId = dc.TrsMessages.Select(trsm => trsm.DocId).ToList();

   var res = dc.TransactionLoggins
                .Where(tl => !trsMessagesDocId.Contains(tl.DocId))
                .Select(tl => tl.CCHMEssage)
                .ToList();

关于linq - linq“不在”查询无法解决我的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11259051/

相关文章:

c# - Linq 位平均值(真实百分比)?

c# - "foreach"是否会导致Linq重复执行?

c# - 搜索 int[] 列表以查找匹配的 int[]

c# - 将两个列表对象组合成一个 List<string>

c# - 使用 LINQ 对当前和下一个对象进行一些计算

c# - LINQ .Take() 返回的元素多于请求的元素

c# - 使用 LINQ 将一个列表复制到另一个列表和子列表

c# - 是否可以使用 System.Data.Linq.Mapping.FunctionAttribute 制作一个通用方法来代替三种方法?

vb.net - 使用 LINQ 查询的 DataGridView 单元格搜索

c# - 匿名类型中的临时变量