C# 搜索结果类型方法将数据加载到LINQ对象的最有效方法

C# 搜索结果类型方法将数据加载到LINQ对象的最有效方法,c#,linq,.net-3.5,c#-3.0,subsonic,C#,Linq,.net 3.5,C# 3.0,Subsonic,我目前有以下情况: public IEnumerable<News> NewsItems { get { return from s in News.All() where s.Description.Contains(SearchCriteria) || s.Summary.Contains(SearchCriteria) select s; } } 如何确定哪个包含搜索查询 更新:我有这个,但它显然击中了数据库3次 va

我目前有以下情况:

public IEnumerable<News> NewsItems
        {
            get { return from s in News.All() where s.Description.Contains(SearchCriteria) || s.Summary.Contains(SearchCriteria) select s; }
        }
如何确定哪个包含搜索查询

更新:我有这个,但它显然击中了数据库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;
var FoundInSummary=News.All().Any(x=>x.Summary.Contains(SearchCriteria));
var FoundInDesc=News.All().Any(x=>x.Description.Contains(SearchCriteria));
IEnumerable结果=null;
如果((铸造厂和铸造厂)| |(铸造厂))
{
结果=(来自News.All()中的s,其中s.Summary.Contains(SearchCriteria)选择new NewsEventSearchResults{Title=s.Title,Data=s.Summary,ID=s.ID});
}
如有其他情况(FoundInDesc)
{
结果=(来自News.All()中的s,其中s.Description.Contains(SearchCriteria)选择new NewsEventSearchResults{Title=s.Title,Data=s.Description,ID=s.ID});
}
返回结果;
更新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 });
                    }
                }
var ss=(来自News.All()中的s,其中s.Description.Contains(SearchCriteria)| | s.Summary.Contains(SearchCriteria)选择s.ToList();
列表结果列表=新列表();
foreach(ss中的var项目)
{
bool FoundInSummary=item.Summary.Contains(搜索条件);
bool FoundInDesc=item.Description.Contains(搜索条件);
如果((铸造厂和铸造厂)| |(铸造厂))
{
添加(NewsEventSearchResults{Title=item.Title,Data=item.Summary,ID=item.ID});
}
如有其他情况(FoundInDesc)
{
添加(NewsEventSearchResults{Title=item.Title,Data=item.Description,ID=item.ID});
}
}

如果它们都包含标准怎么办?还是它们相互排斥?如果是的话

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

我选择了选项3

很好!如果两者都包含,我将返回摘要
Data = (s.Description != null ? s.Description : s.Summary)