次の設定があります。文字列を含むオブジェクトの配列(xml風ですが、正規化されていません)と、IDを持つ文字列のリスト/配列があります。
そのリストのIDを持つ文字列も、オブジェクトの1つで押されているかどうかを確認する必要があります。
ここに私たちが試したセットアップがあります:
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();
}
}
編集:
ラッパーには、を含むpropを持つオブジェクトがあるため、これを実行すると、が期待.Any()
されます。intersect
true
<id>2</id>
intersect
null
間違った方法を使用している場合は、言ってください。可能な限り高速に動作するはずです。見つかったときに簡単true
にできます!