C# 使用Lambda按对象成员和第二个整数数组进行过滤

C# 使用Lambda按对象成员和第二个整数数组进行过滤,c#,lambda,C#,Lambda,我有一个整数数组: int[] numbers = { 1, 3, 5, 7, 9 }; 我还有一个包含整数的自定义对象数组。我想使用Lambda过滤自定义对象数组,只过滤上面数字数组中匹配的整数 public class SomeStruct { public int MyNumber; } ArrayOfSomeStruct = ArrayOfSomeStruct .Where(m = m.MyNumber is contained in numbers array);

我有一个整数数组:

int[] numbers = { 1, 3, 5, 7, 9 };
我还有一个包含整数的自定义对象数组。我想使用Lambda过滤自定义对象数组,只过滤上面数字数组中匹配的整数

public class SomeStruct
{
    public int MyNumber;
}

ArrayOfSomeStruct = ArrayOfSomeStruct
    .Where(m = m.MyNumber is contained in numbers array);

这是如何做到的?

根据您的示例,我创建了一个示例

如果数组元素的编号包含在“number”变量中,则这是获取数组元素的代码

ArrayOfSomeStruct = ArrayOfSomeStruct.Where(x => numbers.Contains(x.MyNumber)).ToArray();

按照您的示例,我创建了一个示例

如果数组元素的编号包含在“number”变量中,则这是获取数组元素的代码

ArrayOfSomeStruct = ArrayOfSomeStruct.Where(x => numbers.Contains(x.MyNumber)).ToArray();

似乎你想要这样的东西:

int[] numbers = { 1, 3, 5, 7, 9 };
var numbersSet = numbers.ToHashset(); // for performance reason
var filtered = arrayOfSomeStruct.Where(e => numbersSet.Contains(e.MyNumber));

似乎你想要这样的东西:

int[] numbers = { 1, 3, 5, 7, 9 };
var numbersSet = numbers.ToHashset(); // for performance reason
var filtered = arrayOfSomeStruct.Where(e => numbersSet.Contains(e.MyNumber));

将数字更改为HashSet,然后在Where中使用HashSet.Contains。
numbers.Contains(m.MyNumber)
应执行以下操作:将数字更改为HashSet,然后在Where中使用HashSet.Contains。
numbers.Contains(m.MyNumber)
应执行此操作