我想检查int[]
数组的长度。如果没有
public List<Parent_Company> GetParentCompany(params int[] clientIds)
{
IEnumerable<Companie> ccs;
if (clientIds.Length == 0)
ccs = _xciRepository.GetAll<Companie>();
else if (clientIds.Length == 1)
ccs = _xciRepository.Find<Companie>(x => x.CustCompID == clientIds[0]);
else
ccs = _xciRepository.Find<Companie>(x => clientIds.Contains(x.CustCompID));
//-- more codes here
}
我收到以下错误:“ LINQ to Entities不支持LINQ表达式节点类型'ArrayIndex'。”
我怀疑这是导致问题的其他声明,查找方法中的表达,即x => clientIds.Contains(x.CustCompID)
有没有办法解决这个问题?否则,我在 linq 中多次使用包含。
感谢您的帮助。
答案 0 :(得分:3)
最简单的方法就是删除这两行:
else if (clientIds.Length == 1)
ccs = _xciRepository.Find<Companie>(x => x.CustCompID == clientIds[0]);
你也可以这样做:
else if (clientIds.Length == 1)
{
var clientId=clientIds[0];
ccs = _xciRepository.Find<Companie>(x => x.CustCompID == clientId);
}
答案 1 :(得分:1)
最有可能的是,有一种简单的方法可以解决您的问题 - 只需使用临时变量,因此您的代码就像:
public List<Parent_Company> GetParentCompany(params int[] clientIds)
{
IEnumerable<Companie> ccs;
if (clientIds.Length == 0)
ccs = _xciRepository.GetAll<Companie>();
else if (clientIds.Length == 1)
{
var clientId = clientIds[0];
ccs = _xciRepository.Find<Companie>(x => x.CustCompID == clientId]);
}
else
ccs = _xciRepository.Find<Companie>(x => clientIds.Contains(x.CustCompID));
//-- more codes here
}