我有以下模型方法:
public IQueryable<CustomerVLAN> CustomerVLANS(int customerid)
{
string customername = entities.AccountDefinitions.SingleOrDefault(a=>a.ORG_ID == customerid).ORG_NAME;// .tolist since i will be querying different context
return tms.CustomerVLANS.Where(String.Compare(a=>a.CustomerName.ToString(), customername.ToString(), StringComparison.OrdinalIgnoreCase));
}
但是我无法在where子句,,,
中使用String.Compare答案 0 :(得分:0)
如果CustomerName和customername是字符串,您可以尝试
return tms.CustomerVLANS.Where(a=>a.CustomerName.ToUpper() == customername.ToUpper());
答案 1 :(得分:0)
Where扩展使用提供的谓词函数过滤IEnumerable
:Func<TSource, bool>
,在您的情况下为Func<CustomerVLAN, bool>
。
您的行“String.Compare(a=>a.CustomerName.ToString(), customername.ToString(), StringComparison.OrdinalIgnoreCase)
”会返回一个整数,而不是Func<CustomerVLAN, bool>
委托(我也不确定是否存在字符Compare
的重载,这些字符串需要您的值提供)。
如果你想使用那个特定的功能,你必须做这样的事情(使用Lambda表达式):
CustomerVLANS.Where(x => (String.Compare(x.CustomerName, customername, StringComparison.OrdinalIgnoreCase) == 0));
除非有特殊原因,否则你最好使用String.Equals
,它返回一个布尔值:
CustomerVLANS.Where(x => (String.Equals(x.CustomerName, customername)));
您可能需要ToString()
,具体取决于客户名称的类型。