我有一个数组:
string myArray={"15","56","17-75","78","100-150","130"}
Run Code Online (Sandbox Code Playgroud)
我想筛选myList中的arrayElements.
我想要等效于下面的代码,但是以编程方式:
mylist.Where(i=>i.val==15 || i.val==56 || (i.val >= 17 && i.val<75) ||i.val==78 || (i.val >= 100 && i.val<150)|| i.val==130)
Run Code Online (Sandbox Code Playgroud)
首先将字符串转换为更有效的比较事物:
int[][] spans =
myArray.Select(
s => s.Split('-').Select(v => Int32.Parse(v)).ToArray()
).ToArray();
Run Code Online (Sandbox Code Playgroud)
然后,您可以将列表中的项目与值进行比较:
list.Where(i => spans.Any(s => {
if (s.Length == 1) {
return i == s[0];
} else {
return i >= s[0] && i <= s[1];
}
}));
Run Code Online (Sandbox Code Playgroud)