我有这两个查询:
- 第一个得到一个不同的标识符列表。
第二个过滤这些 id 的结果。
var query = (from bk in context.BookKeeping join bk12 in context.BookKeeping on bk.LetteringId equals bk12.LetteringId into bk11 from bk1 in bk11.DefaultIfEmpty() join bi2 in context.BillingInformation on bk1.BillingInformationId equals bi2.BillId into bi1 from bi in bi1.DefaultIfEmpty() where bk.LetteringId != null && bk.PaymentId != null && bk1.LetteringId != null select bk.PaymentId).Distinct(); var query2 = from m in context.Movement join p2 in context.Payment on m.PaymentId equals p2.Id into p1 from p in p1.DefaultIfEmpty() join pm2 in context.PaymentMode on p.PaymentModeId equals pm2.Id into pm1 from pm in pm1.DefaultIfEmpty() from ids in query where ids.Value == p.Id select m;
第二个查询的有趣部分如下:
from ids in query
where ids.Value == p.Id
我想知道我是否可以使它更紧凑,以及如何使用方法语法有条件地过滤 ids 列表。我知道我必须使用SelectMany但不知道如何选择正确的重载。
TIA。