我們有以下設置: 我們有一個包含字符串的對象數組(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