如何组合LINQ和列表的查询?

时间:2018-06-10 14:19:35

标签: c# sql linq

[对不起,如果重复] 我找不到合适的解决方案,所以我决定问一个问题。

我有一个对象companies,它返回元素列表。

我想写一个查询,它将选择我们列表中的所有CompanyId。我不想只使用FirstOrDefault()选择一条记录。

示例:

var companiesSummary = _context.Company
                       .Where(c => c.CompanyId == companies.Select(cs => cs.ID))
                       .Include(country => country.Country)                   

我该如何应对?你有什么想法吗?

3 个答案:

答案 0 :(得分:1)

从内存列表中选择公司的ID,然后将其传递到where方法中的查询中:

var ids = companies.Select(cs => cs.ID).ToList();
var companiesSummary = 
    _context.Company
    .Where(c => ids.contains(c.ID))
    .Include(country => country.Country)

答案 1 :(得分:0)

假设您的companies包含要与ID进行比较的Company.CompanyId属性的对象列表,您的查询应如下所示

int[] ids = companies.Select(cs => cs.ID).ToArray();
var companiesSummary = _context.Company
    .Where(c => ids.Contains(c.CompanyId))
    .Include(company => company.Country);

答案 2 :(得分:-1)

var matchingCompanies = companies.Where(c => companyIds.Contains(c.Id))

companyIds提供HashSet<T> Contains