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)