查找列值中的行值

时间:2015-06-10 14:05:16

标签: sql arrays entity-framework entity

CompanyList companyList = new CompanyList();
companyList.matchCompanies();
CompanyListObject[] companyListObject = companyList.companyList;

List<double> companylist = new List<double>();
foreach (var company123 in companyListObject)
{
    if (company123.parentCompany == companyID)
    {
        companylist.Add(company123.companyID);
    }
}

IEnumerable<RaCallRatesMatched> items = 
    db.RaCallRatesMatched.Where(row => row.accountcode == companyIDDouble);

我想拉出列值中存在行值的结果。基本上我的列表包含所有公司ID。这是一个很短的清单,有些是3-5个元素。而不是检查行是否只等于列表值之一。我可以检查它是否等于更多吗?

请记住,我不能在固定的上下文中使用||语句,因为列表大小会有所不同。例如,与List[0] || List[1] || List[2]的比较过于固定,如果时间过长,我会收到异常。

我无法对数据库进行多次调用,因为每次调用都需要花费很长时间才能构建。我可以一次性完成这一切吗?

2 个答案:

答案 0 :(得分:1)

使用.Any()

e.g。

MyCompanyList.Any(x => x.Equals(MyCompanyName));

此示例中MyCompanyList是字符串列表。这也可以应用于整数列表。等

您可以比较复杂类中的任何参数,或任何类型的有效等式检查。

更多示例:http://www.dotnetperls.com/any

答案 1 :(得分:1)

IEnumerable<RaCallRatesMatched> items = db.RaCallRatesMatched.Where(row => companylist.Any(y => y == row.accountcode));

这很有用。感谢Doomsknight和我的几位同事!