【发布时间】:2015-07-01 22:09:12
【问题描述】:
我有一个清单和清单
我想从 dbCars 对象中获取 Car 列表,条件为 Name、Title、Comment 属性包含 target_terms 数组中的任何值 [请注意,我不是在尝试查找包含对象属性的数组,但我正在尝试相反的方法] 并为结果动态分配排名
我尝试了下面的代码 [它将检查数组是否包含任何属性]
List<Car> dbCars;//Values from Db
List<string> target_terms=new List<string> {"diesel","mechanic"};
var ranked_result = (from carItem in dbContext.Cars
select new
{
carItem,
Rank = target_terms.Contains(carItem.Title) ? 1 :
target_terms.Contains(carItem.Name) ? 2 :
target_terms.Contains(carItem.Comment) ? 3 :
0
}).OrderBy(i => i.Rank);
//exclude results with no match (rank=0 ) and get a Distinct set of images
List<Car> _searchResult = (from item in ranked_result
where item.Rank != 0
select item.carItem).Distinct().ToList();
我如何编写相同的代码来执行相反的操作,即检查 Car 属性是否包含 target_terms 中的任何单词
例如,如果我正在搜索柴油并且我有 2 辆名称为“Swift Diesel car”“Alto Diesel car”的汽车,它应该返回 2 个结果 即我的属性标题或名称或评论包含单词“柴油”
【问题讨论】: