在 Include 语句中使用Where子句的Linq查询[重复]

2024-03-30

我正在尝试替换我的又大又丑的查询;虽然丑陋,但它可以按预期工作:-

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”类型的操作数

我知道这个概念是正确的,但我需要语法方面的帮助。


你不能有一个Where在 - 的里面Where,但你可以使用Any这将返回一个布尔值

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.Any(f=> f.Amount != null)) // here
    .ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Include 语句中使用Where子句的Linq查询[重复] 的相关文章

随机推荐