2

我有以下模型方法:

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 ,,,

4

2 回答 2

0

如果 CustomerName 和 customername 是字符串,你可以试试

return tms.CustomerVLANS.Where(a=>a.CustomerName.ToUpper() == customername.ToUpper());
于 2013-11-14T10:53:02.653 回答
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(),具体取决于 CustomerName 的类型。

于 2013-11-14T11:07:26.767 回答