在Entity Framework中正确使用StartsWith和Contains

时间:2014-02-18 05:04:40

标签: c# asp.net linq entity-framework

我想从Linq StoreName查询中的Linq to Entity字段中删除前缀。

我有以下查询,它获取表

中所有前缀的列表

查询1

var _prefix = context.Prefixes.Select(pre => pre.Prefix1);

我想在 Query2

中使用此结果

QUERY2

var objRetailer = from stores in context.RetailerStoredtls
                  join ret in context.RetailerContactdtls
                  on stores.RetailerID equals ret.RetailerID
                  join retreg in context.RetailerRegDates
                  on stores.RetailerID equals retreg.RetailerRegDateId
                  where (stores.IsDeleted == null || stores.IsDeleted == false)
                                  && (stores.CreatedDate.Value.Year == iYear || stores.ModifiedDate.Value.Year == iYear)
                  && retreg.IsApproved== true
                  orderby stores.StoreName
                  select new
                      {
                           stores.StoreID,
                           Store = stores.StoreName,
                           Area = stores.StoreCity,
                           Zip = stores.StoreZip,
                           SellingCard = (storessellingcard.Contains(stores.RetailerID.Value) ? true : false)
                           StoreWithoutPrefix = stores.StoreName.StartsWith(<one of prefix retrieved from Query1> ? stores.StoreName : <stores.StoreName without prefix>
                                  };

很遗憾,我们.StartWith()仅使用字符串参数而不是 Query1 的结果,如果我使用.Contains它不会检查它是否以“#1”开头,它只检查字符串是否存在。我该怎么做才能完成这项任务?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用IndexOf,但可能您遇到区分大小写的问题。所以添加一个参数CompareOptions.IgnoreCase