我正在尝试替换我的又大又丑的查询;虽然丑陋,但它可以按预期工作:-
using (var ctx = new Data.Model.xxxTrackingEntities())
{
var result = ctx.Offenders
.Join(ctx.Fees, o => o.OffenderId, f => f.OffenderId,
(o, f) => new { Offenders = o, Fees = f })
.Join(ctx.ViolationOffenders, o => o.Fees.ViolationId, vo => vo.ViolationId,
(o, vo) => new { Offenders = o, ViolationOffenders = vo })
.Join(ctx.Violations, v => v.ViolationOffenders.ViolationId, vo => vo.ViolationId,
(v, vo) => new { Violations = v, ViolationOffenders = vo })
.Where(o => o.Violations.Offenders.Offenders.YouthNumber != "")
.ToList();
gvwData.DataSource = result;
}
使用以下 linq 查询:-
var result = ctx.Offenders
.Include(o => o.Fees.Where(f => f.Amount != null))
.Include(o => o.ViolationOffenders)
.Include(o => o.ViolationOffenders.Select(of => of.Violation))
.Where(o => o.YouthNumber != "" && o.FirstName != "")
.ToList();
我在查询的第二行爆炸了......一旦我添加了Where子句......o => o.Fees.Where(f=> f.Amount != null)
我收到的错误消息...
包含路径表达式必须引用类型上定义的导航属性。使用虚线路径作为参考导航属性,使用 Select 运算符作为集合导航属性。
此外,我尝试将查询编写为:-
var result = ctx.Offenders
.Include(o => o.Fees)
.Include(o => o.ViolationOffenders)
.Include(o => o.ViolationOffenders.Select(of => of.Violation))
.Where(o => o.YouthNumber != "" && o.FirstName != "" && o.Fees.Where(f=> f.Amount != null))
.ToList();
但后来我收到以下错误:-
运算符“&&”不能应用于“bool”和“System.Collections.Generic.IEnumerable”类型的操作数
我知道这个概念是正确的,但我需要语法方面的帮助。