我们有以下设置:
我们有一个对象数组,其中包含一个字符串(类似于xml但未规范化),还有一个带id的字符串列表/数组。
我们需要找出该id列表中的字符串是否也存在于其中一个对象中。
这是我们尝试过的设置:
编辑:
我们期望的是,当我们在intersect上执行.Any()时,它会显示true,因为wrappers具有包含2的prop对象,intersect为null。
如果我们使用了错误的方法,请告诉我们。它应该尽可能快地工作。找到一个简单的true就可以了!
我们需要找出该id列表中的字符串是否也存在于其中一个对象中。
这是我们尝试过的设置:
public class Wrapper
{
public string MyProperty { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Wrapper> wrappers = new List<Wrapper>()
{
new Wrapper{ MyProperty = "<flkds,dlsklkdlsqkdkqslkdlqk><id>3</id><sqjldkjlfdskjlkfjsdklfj>"},
new Wrapper{ MyProperty = "<flkds,dlsklkdlsqkdkqslkdlqk><id>2</id><sqjldkjlfdskjlkfjsdklfj>"}
};
string[] ids = { "<id>0</id>", "<id>1</id>", "<id>2</id>" };
var props = wrappers.Select(w => w.MyProperty);
var intersect = props.Intersect(ids, new MyEquilityTester());
Debugger.Break();
}
}
class MyEquilityTester: IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return x.Contains(y);
}
public int GetHashCode(string obj)
{
return obj.GetHashCode();
}
}
编辑:
我们期望的是,当我们在intersect上执行.Any()时,它会显示true,因为wrappers具有包含2的prop对象,intersect为null。
如果我们使用了错误的方法,请告诉我们。它应该尽可能快地工作。找到一个简单的true就可以了!
MyProperty
中的文本解析为更易读/友好的 Linq/可维护结构。 - Marcelo De Zen