对象字段包含arrayElements

lov*_*iji 0 c# linq arrays

我有一个数组:

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)

Guf*_*ffa 6

首先将字符串转换为更有效的比较事物:

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)