【问题标题】:Filter parent/child table (one to many association) in linq query based on entities in child table?根据子表中的实体在linq查询中过滤父/子表(一对多关联)?
【发布时间】:2010-07-10 01:17:58
【问题描述】:

我有一个表(项目),它链接到 projectID 上的 projectVersions

projectVersions 包含几个列,我想在这些列上过滤返回的项目(和关联的 projectVersions)列表。例如,有一个“容量”列和一个“国家”列。我正在一个页面上做一个过滤的项目列表,我想包括所有项目,其中任何一个关联的 projectVersions 的容量为 750 毫升,国家为“法国”。

可能是某个特定参数没有设置,所以我传递一个零表示不过滤。

我想这需要某种子查询,因为当我尝试做这样的事情时:

  thisList = (From p In dc.tblProjects _  
             Where ((Brand = 0) Or (p.Brand = Brand)) _  
             And ((brandVariant = 0) Or (p.brandVariant = brandVariant)) _  
             And ((sizeCapacity = 0) Or (p.tblProjectVersions.sizeCapacity.xxx = sizeCapacity)) _  
                                 Order By p.dateCreated Ascending _  
                                 Select p).ToList  

它不能作为“xxx”位工作,它是一对多的,希望我指定一个项目以获取其中的实体,但我想查询任何关联版本与其中一个匹配的位置标准。

【问题讨论】:

    标签: .net vb.net linq


    【解决方案1】:

    如果我理解正确,问题出在

     Or (p.tblProjectVersions.sizeCapacity.xxx = sizeCapacity)
    

    由于“tblProjectVersions”是一个集合,并且您想查找“任何”相关版本与条件匹配的位置,请执行以下操作:

     Or (p.tblProjectVersions.Any(Function(t) t.sizeCapacity.xxx = sizeCapacity))
    

    这将检查表格内是否有任何具有适当“sizeCapacity”的元素。

    【讨论】:

    • 这看起来很有趣 - 会去尝试一下,非常感谢。
    • Carl,已经有一段时间了,但如果它对您有用,您应该将其标记为答案...
    猜你喜欢
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2018-08-03
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多