我们有以下设置: 我们有一个包含字符串的对象数组(xml-ish,但没有标准化),并且我们有一个带有id的字符串列表/数组。C#Linq,在两个列表中搜索相同的项目
我们需要确定一个字符串是否来自该列表中带有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();
}
}
编辑:
我们期待什么,当我们做一个.Any()
上intersect
即是说true
因为包装与道具一个对象其中包含<id>2</id>
,intersect
是null
。
如果我们使用错误的方法,请说。它应该尽可能快地工作。一个简单的true
当发现将做!
什么是你的问题吗? –
@DanielHilgarth我已更新信息 – Frederiek
这里要做的最好的事情是将'MyProperty'中的文本解析为更具可读性/易于LINQ /可维护的结构。 – devundef