リスト<のオブジェクトをC#でどのようにフィルタリングできますか?C#2.0でforeachループを使用しないフィルタリスト<>オブジェクト
答えて
我々はList<string>
を持っていて、文字列の長さが5
よりも大きい場合にのみ項目以下のコードをしたいとしましょう、結果をList<string>
を返します。
List<string> myList = new List<string>();
myList.Add("hello");
myList.Add("world!");
myList.Add("one");
myList.Add("large!!");
List<string> resultList = myList.FindAll(delegate(string s) { return s.Length > 5; });
resultList '世界!'と '大きな!!'。 この例では、anonymous methodが使用されています。 OnlyLargerThanFiveもPredicateと呼ばれ、
List<string> myList = new List<string>();
// ..
List<string> resultList = myList.FindAll(OnlyLargerThanFive);
//..
private static bool OnlyLargerThanFive(string s)
{
return s.Length > 5;
}
上記デリゲート:それはのようにも書くことができます。
@Razzieの方法以外にもLINQを使用することもできます。
List<string> myList = new List<string>();
myList.Add("hello");
myList.Add("world!");
myList.Add("one");
myList.Add("large!!");
var filtered=from s in myList where s.Length > 5 select s;
PS: - :「
List<Item> l;
l.FindAll(n => n.Something == SomethingElse);
は、それが内部のforeachを使用できますが、できるは、最善の解決策は、ラムダを使用することです.NET 3および
彼はLINQを持たないC#2.0について話していました。それ以外は正しいです(この例ではlambda構文を使用します) – Razzie
おかげさまで@Razzie PSに答えを追加しました:) – TheVillageIdiot
LINQを使用できます。私はこれをテストしていませんが、私はそれが「P」で始まるもののみを表示するようにパイの詰め物の私のリストの要素を絞り込むうと考えている:
List<string> list = new List<string>();
list.Add("Apple");
list.Add("Peach");
list.Add("Chocolate");
list.Add("Pear");
list.Add("Pumpkin");
list.Add("Cherry");
list.Add("Coconut");
var filteredOnes = from item in list
where item.StartsWith("P")
select item;
OPがC#2.0と言っていたという事実が完全に吹き飛んだ。間違いなくLINQはありませんが、OPがアップグレードされた場合にはこれが機能します。 – itsmatt
一覧<> .Findは(与えます最初に一致する出現)、List.FindAll()は一致するすべての出現を示します。複合型のリストを 例ですが、以下の通りである:
私はクラスレポートがあります。
public class Report
{
public string ReportName;
public ReportColumnList ReportColumnList;
}
、どこで、リスト内の項目を検索するにはレポート
List<Report> reportList;
のリストをReportName = 'MyReport'、コードは次のようになります。
string reportName = "MyReport";
List<Report> myReports = reportList.FindAll(delegate(Report obj) { return obj.ReportName == reportName; });
最初のレポートを取得するには:デリゲートに渡されたオブジェクトがリストが移入されるタイプでなければならないこと
Report rc = reportList.Find(delegate(Report obj) { return obj.ReportName == reportName; });
注意。
LINQのように使用できます。
List<string> List = new List<string> { "i", "am", "using", "LINQ!" };
List<string> result = myList.Where(s => s.Length > 3).ToList();
はそれだけで、.NET 3以上で働いています。
- 1. いつリスト<T> .ForEachをネイティブforeachループで使用しますか?
- 2. RxJava2フィルタリスト<Object>
- 3. リファクタリングのforeachループは<T> .ForEach(...)
- 4. IEnumerator <T>を返すメソッドをforeachループで使用できますか?
- 5. ウェブAPIは、私がアイデンティティ2.0</p> <p>でWEBAPI 2.0を使用していますリクエスト
- 6. 複数のforeachループと我々はすでに<code>foreach</code>知られているので
- 7. PowerShellでForeachループを使用していない
- 8. 使用HTML <em>体-パーサ</em>を使用してオブジェクトに<em>ExpressJS</em>で
- 9. AsyncInvokerは、私はジャージー2.0を使用して<code>AsyncInvoker</code>を使用していますスレッド
- 10. フィルタリスト私は<code>Fruit</code>のリストを持っている
- 11. は私が<code>foreach</code>ループを使用して動的に<strong>ビルド</strong>に苦労していたカスタムフィルタに渡すことにより、ドキュメントのリストをフィルタリングする必要があるforeachループ
- 12. datastax c#ドライバIEnumerable <T> foreach optimize
- 13. ダイナミッククエリを使用したフィルタリスト?
- 14. Ageraを使用したフィルタリスト
- 15. for/whileループとforeachループのパフォーマンスリストの表示<T>
- 16. foreachループでオブジェクトが空になった
- 17. forEachループのforEachループでオブジェクトを生成する方法
- 18. List <Tuple <string、string >>内にForeachループを作成する
- 19. XSLT-2.0:出力はSaxonHE 9.7/XPathの-2.0</p> <p>を使用して
- 20. VBA - 私は<em>ノード</em>オブジェクトを作成していたループ
- 21. foreachループでと言って</p> <pre><code>FormCollection formsList = Application.OpenForms; </code></pre> <p>を使用して、メインメニュー以外のすべてのフォームを閉じようとC#の
- 22. PowershellへのC#コード - 新しいオブジェクトを使用したオブジェクトインスタンス化<x>(y)
- 23. Array(n).forEachループがn回繰り返されないのはなぜですか? 3.</p> <p><code>[1, 2, 3].forEach</code>の<code>length</code>を有する
- 24. C#でforeachループでカウンター
- 25. Parallel.ForEachを使用するか、リスト<Task>でforeach
- 26. C++ベクトル<vector <double>> typenameエイリアスを使用して
- 27. Schemeでfoldrを使用したフィルタリスト
- 28. C#func <>左のオブジェクトに適用
- 29. PHP foreachがループしない
- 30. C#foreachループでMongoDBのQueryとQueryBuilderを使用するには?
いい解決策ですが、これは内部的にforeachを使用しません。私はKthevarが自分自身を反復したくないということを意味していましたが、 – RobV
lamdasの新機能、myList.FindAll(l => l.Length> 5)をどうやってやればいいのですか? –
@RobV: for 'ループを内部的に実行します。もし私が間違っているなら、私を訂正してください。 – Razzie