我有
string[] centersArr = new string[] {253, 6789, 9080};
我想查询数据库,其中心编号以上面数组的任何项目开头,中心的第8个字符应为'1'。
var result = disctrict.Where(x => centersArr.Contains(x.Center) && x.Center[7] == '1').ToList();
我的数据库中心号码为2533455,2537890,25312678,678912等等。
上面的查询返回null结果。请帮我怎么写这个查询。
答案 0 :(得分:1)
.Where(x => centersArr.Any(c => x.Center.StartsWith(c)) && ....)
答案 1 :(得分:0)
centersArr.Contains(x.Center)
无效。
centersArr
中的项目确实不能包含您提供的任何示例数据库值。我怀疑所有数据库值都是如此。
从本质上讲,你要求的情况是以下情况属实(以下是超伪伪代码)
ListOfCenters('A','B','C').Contains(ListOfLongerItemsFromDatabase('WORDA', 'BWORD', 'WORDC').
那完全落后了。 WORDA或BWORD或WORDC可以并且确实包含A,B或C.但不是相反。
这有助于澄清吗?
然而,这应该有效:
var result = disctrict.Where(x => (x.Center.Contains("253") || x.Center.Contains("6789") || x.Center.Contains("9080")) && x.Center[7] == '1').ToList();
除非Linq to SQL无法将其转换为SQL表达式。 。 ..如果它不起作用,至少它在概念上显示了你真正想要做的事情。