2011-12-07 5 views
0

私はこのリストを得た:リストはありますか<T> Tのプロパティが含まれていますか?

私のプロジェクトで
private static List<Type> _AbstractTypes = new List<Type>(); 

以降、私はType.FullNameに対応stringを得ました。 事は、私は私の文字列が私のリストに含まれているかどうかを確認したいのですが、私は、使用可能なループを避けるために管理していないということです:( イムのようなものを探して:

_AbstractTypes.FullName.Contains(myString) 

私は絶対に承知しています私の以前のコードは下の、ここでしかコードを構築することが !あなたはLINQを使用することができます任意の助け

+0

あなたはしないでくださいループを使いたいですか?ループを実装するのに役立つだけですか?私はforeachループと思うので、あなたは望ましい結果を得るでしょう。 – stackr

答えて

6

を事前に感謝を探しているものイムの一種だが、我々はループのない話をしているが、すべてのコンパイルではないことフードがループしなければならない場合は、HashSet<T>を使用してください。

LINQのコードは次のようになります。

_AbstractTypes.Any(t => t.FullName == myString); 

HashSet<Type>コードは次のようになります。リストには要素が含まれて

var types = new HashSet<Type>(); 
types.Add(typeof(int)); //Fill it with types 
types.Add(typeof(double)); 

//Check by getting types from their string name, you could of course also cache those types 
Console.WriteLine("Contains int: " + types.Contains(Type.GetType(intName))); //True 
Console.WriteLine("Contains float: " + types.Contains(Type.GetType(floatName))); //False 
+0

+1のHashSet

+0

_AbstractTypes.Any(t => t.FullName == myString);完璧です:) "いいえループ"私は古いスクール探しのコードで何かを意味していなかった、あなたの答えは私が探していたものです;)thx! –

+0

@GuillaumeSlashy Linqはモダンでクールなので、昔の学校を見ていないというトリックを行うべきです:-) –

0

場合は、_AbstractTypes.First().GetType()ような何かを行うことができます。

1

このコード:

bool result = _AbstractTypes.Any(t=>t.FullName == myString); 

が仕事を行う必要があります。

条件が満たされるか(trueが返される)、またはnone(falseが返される)まで、すべての型に対して述語をテストします。

_AbstractTypes.Any(t=>t.FullName.Contains(myString)) 
0

は、おそらくこのような何かをしたいです。

あなたは(舞台裏のループで)行うことができますタイプはあなたのリストに含まれている場合

bool check = _AbstractTypes.Any(item => item.FullName == myString); 
0

あなたはループを回避することはできません。

0

は、私は見つけることができると思い、そのよう:だから

if (_AbstractTypes.Contains(typeof(string))) 
{ 
    // Do Something 
} 
関連する問題