私はすでにIEnumerableから派生しているクラスのコードを持っています。 私は、そのリストの中の何かを探すためにInstanceで "Contains"メソッドを使用できる方法があるのだろうかと思っていましたか?私はIEnumerableに "Contains"メソッドを持っていますか?
7
A
答えて
15
あなた本当には非ジェネリックIEnumerable
を実装する、または汎用IEnumerable<T>
ますか?おそらく一般的なものを実装することができれば、あなたの人生はもっと簡単になります。LINQ to Objectsを使うことができます。実際にはContains
拡張メソッドがあります。
そうでなければ、Cast
またはOfType
を使用して非ジェネリックからジェネリックに変換する可能性があります。
bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);
あなたはちょうどあなたがしたい場合は、パラメータTIの拡張メソッドとしてカスタム比較子を追加することができます:)
14
いいえ、IEnumerable<T>
インターフェイスにそのような方法はありません。あなたが使うことができるが、extension method
がある。
using System.Linq;
、その後:
IEnumerable<string> foos = new[] { "foo", "bar", "baz" };
bool IsThereABar = foos.Contains("bar");
0
public static bool Contains<T>(this IEnumerable source, T value)
{
foreach (var i in source)
{
if (Equals(i, value))
return true;
}
return false;
}
かかわらを開始するための汎用的なインタフェースを実装した場合それはよりよいだろうが
が含まれています関連する問題
- 1. 私はこのIEnumerableを持ってIEnumerable
- 2. String.Joinは、私がこのシグネチャを持つメソッドを持ってIEnumerable <string>
- 3. は、私は次のコード(IEnumerableをを返すメソッドを呼び出す)を持ってIEnumerableを
- 4. 私はメソッドを持って
- 5. は、私はメソッドを持っている
- 6. 私のデータソースには、値を保持しているが、EVALは、私はIEnumerableをあるデータソースを持っているのGridViewを持っているラベル
- 7. は私がシグネチャを持つメソッドを持っていスウィフト
- 8. IOS - 私はユニットテストしたい私はメソッドを持って
- 9. 'Contains'メソッドはfalseを返します
- 10. 私はスーパークラスの次のメソッド持って
- 11. 私はC#でクラス型を返すメソッドを持っている
- 12. .NET 4.5非同期は、私は非同期メソッドを持って待っていますし、オーバーロードされたメソッド
- 13. 私はログインフォームを持っています
- 14. Javascriptを私は持っています
- 15. は、私は以下のメソッドを持っている方法
- 16. Datatable.Loadは、私は、このメソッドを持っているSqlCeReader
- 17. ユニットテストは、私はメソッドを持っているHttpContext
- 18. DocumentDb CreateDocumentQueryは、私は、このメソッドを持っている
- 19. は、私はメソッドを持っている唯一のサブクラス
- 20. は、私は、このメソッドを持っているASP.net
- 21. たUnitOfWorkは、私は、このメソッドを持っている状態
- 22. Mockitoは、私は、クラスを持っているメソッド
- 23. は、私はアンドロイドのアプリケーションのメソッドを持っているパラメータ
- 24. は、私は以下のメソッドを持っているハングアウト
- 25. は、私は次のメソッドを持っている暗黙のパラメータ
- 26. は、私は、このメソッドを持っているパラメータ
- 27. データアクセスレイヤーまたはCRUDメソッドを持つオブジェクトを持っていますか?
- 28. フォームPOSTメソッドは、私は私のhtmlページに設定フォームを持っている
- 29. は、私は、このメソッドを持っている私に不正な文字
- 30. モーダルビューは、私は私のMainViewControllerでこのメソッドを持って