述語条件に基づいてフィルタリングするIEnumerableのFindAllメソッドを作成しました。配列とリストの両方に共通です。なぜならSIL拡張メソッドがSilverlightウィンドウで動作しない電話番号
でコード:それは私のアプリケーションで私のために働いていない理由
public static IEnumerable<T> FindAll<T>(this IEnumerable<T> tCollection, Func<T, bool> predicate)
{
if (null == tCollection) yield return default(T);
using (IEnumerator<T> iterator = tCollection.GetEnumerator())
{
if (!iterator.MoveNext())
{
yield return default(T);
yield break;
}
do
{
if (predicate(iterator.Current))
yield return iterator.Current;
}
while (iterator.MoveNext());
}
}
私が呼び出していたときに、それは私のために動作しません。..
List<string> strings = new List<string> { "Kumaran", "Raj", "Kannan", "Karthi", "Gopal" };
IEnumerable<string> str = strings.FindAll(item => item.StartsWith("K"));
は、私が知ることができます。
こんにちは「それは私にとってはうまくいかない」という言い回しについて詳しく述べていますか? –
リストが空であるか参照がnullの場合、なぜ単一の要素(デフォルト)を生成したいのですが、リストにエントリがあり、いずれも述語と一致しない場合、なぜですか?なぜ、あなたは単に組み込みの 'Enumerable.Where'メソッドを使用していませんか? –
Silverlightで異なる動作が見られる理由は、 'List'には既に 'FindAll'メソッドがあるので(これは壊れていないので)、メソッドがデスクトップ.NET上で全く呼び出されないということです。 。 –