使用 Linq 和 C# 比较对象的子列表



我在为我正在编写的自定义业务对象搜索引擎制定查询时遇到问题,我希望这里有人可以帮助我。 我会尽力描述这个问题。

以下是我正在使用并通过实体框架 6 (EDMX) 访问的数据库表:

Contract
------------
ContractUID
ContractDate
ContractEntity
-------------
ContractEntityUID
ContractUID
EntityTypeID
一个协定行可以有多个协定实体

行,因此一个协定可以引用多个实体类型 ID。

除其他搜索条件外,搜索用户界面为此搜索引擎提供实体类型 ID 列表。 引擎应返回合同列表,这些合同引用搜索请求中的任何实体类型 ID 并匹配任何其他提供的条件(例如合同日期)。

输入搜索条件包装在如下所示的对象中:

SearchCriteria
{
    DateTime? ContractDate;
    List<int> EntityTypeIDs;
}

以下是我到目前为止已经完成的一些示例代码:

var d = entities.Contracts.Where(q => q.ContractUID > 0);
if(search.ContractDate.HasValue)
   d = d.Where(q => q.ContractDate == search.ContractDate);
if(search.EntityTypeIDs != null)
{
  d = d.Where(q => q.ContractEntities.Select(q2 => q2.EntityTypeID).Any(search. EntityTypeIDs.Select(i).Contains(…
}

我不清楚的是如何将使用 linq to sql 比较两个列表中描述的课程应用于这种情况。 似乎很关键的区别是我需要比较两个列表,它们本身就是其他对象的属性。 我在这里错过了一些明显的东西吗? 任何帮助将不胜感激。

代码中的最后一个 Where 语句是我关注的:

获取列表中至少有 1 个ContractEntity EntityTypeIdContracts

d = d.Where(q =>
    q.ContractEntities.Any(conEnt => 
        search.EntityTypeIDs.Contains(conEnt.EntityTypeId)));

相关内容

  • 没有找到相关文章

最新更新