【发布时间】:2021-11-30 02:12:08
【问题描述】:
q = q.Where(s =>
!matchingRecords.Contains(s.Id)
|| (s.SecId != null)
);
但 matchingrecords 可能为 null 或其中包含 0 个项目,因为它是一个列表。因此,在这种情况下,它会在上面的代码中失败。我想检查这仅包含 匹配的记录不为空,并且有一些其他元素不存在。
一种方法是放置IF-Else 块并重复代码,但我想内联,如何?
【问题讨论】:
-
q = matchingRecords?.Count() > 0 ? q.Where(s => !matchingRecords.Contains(s.Id) || (s.SecId != null) ) : q;. -
@AluanHaddad 因为 EF 和 LINQ to SQL 被标记,
?.将不被支持。 -
@NetMage 是的,但我没有在表达式树中使用它。
-
但原始海报是 -
q是一个IQueryable,它构建了一个Expression树,因此是 EF 和 LINQ to SQL 的标签。
标签: c# entity-framework linq c#-4.0 linq-to-sql