我很好奇现在如何转换此查询语法:
Esperienze = (from e in Esperienze
from p in e.PeriodiValidita.Cast<PeriodoValidita>()
where UiUtils.IntersectDatesRanges(DateTime.Parse(p.ValidoDal), DateTime.Parse(p.ValidoAl), DataInizioDT, DataFineDT)
select e).Distinct();
到LINQ中的方法语法。 .SelectMany
?
答案 0 :(得分:4)
根据this我得到了
Esperienze
.SelectMany(e => e.PeriodiValidita.Cast<PeriodoValidita>(), (e, p) => new { e, p })
.Where(τ0 => UiUtils.IntersectDatesRanges(
DateTime.Parse(τ0.p.ValidoDal),
DateTime.Parse(τ0.p.ValidoAl),
DataInizioDT,
DataFineDT))
.Select(τ0 => τ0.e)
.Distinct()
查询加上Distinct
。
在规范中,您正在寻找 7.16.2.4 7.16.2.4 From,let,where,join和orderby子句的 部分 p>
带有第二个from子句的查询表达式,后跟select子句以外的其他内容:
from x1 in e1
from x2 in e2
…
被翻译成
from * in ( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => new { x1 , x2 } )
…