在 LinQ 查询中使用字典

本文关键字:T1 T2 字典 LinQ 查询 | 更新日期: 2024-11-01 00:55:59

我需要执行如下所示的代码:

Dictionary<Int64, List<Int64>> types;
// initialization of dictionary
results = (from m in d.Linq() 
           where (filter.Types.Any(x =>
                                 x.Key == m.DocumentType.Code
                                 && x.Value.Contains(m.DocumentPurpose.Code)
                                )
                 )
           select m 
          ).ToList();

当我执行此测试时,我收到了System.NullReferenceException.但我确定对象types不是null并且至少包含一对(键:26;值:2、4)。

我认为 LINQ 无法将此 Any() 表达式转换为 SQL。如何重写此查询?

在 LinQ 查询中使用字典<T1、T2>

试试这个:

results = (from m in d.Linq() 
           where (m.DocumentType != null &&
                  m.DocumentPurpose != null &&
                  filter.Types.Any(x =>
                                 x.Key == m.DocumentType.Code
                                 && x.Value.Contains(m.DocumentPurpose.Code)
                                )