2013-11-14 32 views
1

裏面我有以下模型方法: -使用String.compare一個黏巴達表達

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)); 
     } 

,但我無法使用String.Compare我的where子句中,,,可以在任何一個建議?

回答

0

提供客戶名稱和客戶名稱是字符串,您可以使用所提供的謂詞函數嘗試

return tms.CustomerVLANS.Where(a=>a.CustomerName.ToUpper() == customername.ToUpper()); 
0

Where延伸過濾的IEnumerableFunc<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,它返回boolean:

CustomerVLANS.Where(x => (String.Equals(x.CustomerName, customername))); 

您可能需要ToString(),這取決於什麼類型的客戶名稱是。