2010-02-09 52 views
1

目前,我有以下几点:将数据加载到LINQ对象的搜索结果类型的方法最有效的方法

public IEnumerable<News> NewsItems 
     { 
      get { return from s in News.All() where s.Description.Contains(SearchCriteria) || s.Summary.Contains(SearchCriteria) select s; } 
     } 

问题是,我只需要返回,实际上有数据的一个属性,以及在标题属性,类似于。

return from s in News.All() where s.Description.Contains(SearchCriteria) || s.Summary.Contains(SearchCriteria) select new {Title = s.Title, Data = //Description or Summary containing the data 

如何确定哪个包含搜索查询?

更新:我有这个,但它显然击中DB 3次

var FoundInSummary = News.All().Any(x => x.Summary.Contains(SearchCriteria)); 

       var FoundInDesc = News.All().Any(x => x.Description.Contains(SearchCriteria)); 

       IEnumerable<NewsEventSearchResults> result = null; 

       if ((FoundInSummary && FoundInDesc) || (FoundInSummary)) 
       { 
        result = (from s in News.All() where s.Summary.Contains(SearchCriteria) select new NewsEventSearchResults { Title = s.Title, Data = s.Summary, ID = s.ID }).AsEnumerable(); 
       } 
       else if (FoundInDesc) 
       { 
        result = (from s in News.All() where s.Description.Contains(SearchCriteria) select new NewsEventSearchResults { Title = s.Title, Data = s.Description, ID = s.ID }).AsEnumerable(); 
       } 

       return result; 

更新2:这是比较有效?

var ss = (from s in News.All() where s.Description.Contains(SearchCriteria) || s.Summary.Contains(SearchCriteria) select s).ToList(); 
       List<NewsEventSearchResults> resultList = new List<NewsEventSearchResults>(); 
       foreach (var item in ss) 
       { 
        bool FoundInSummary = item.Summary.Contains(SearchCriteria); 
        bool FoundInDesc = item.Description.Contains(SearchCriteria); 
        if ((FoundInSummary && FoundInDesc) || (FoundInSummary)) 
        { 
         resultList.Add(new NewsEventSearchResults { Title = item.Title, Data = item.Summary, ID = item.ID }); 
        } 
        else if (FoundInDesc) 
        { 
         resultList.Add(new NewsEventSearchResults { Title = item.Title, Data = item.Description, ID = item.ID }); 
        } 
       } 

回答

0

我去选项3

2

如果他们包含哪些标准?或者它们是互斥的?如果是这样

Data = (s.Description != null ? s.Description : s.Summary) 
+0

好点!如果它们都包含它,我将返回摘要 – Jon 2010-02-09 15:30:11

相关问题