リスト<のオブジェクトを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. リファクタリングのforeachループは<T> .ForEach(...)
- 3. IEnumerator <T>を返すメソッドをforeachループで使用できますか?
- 4. は私が<code>foreach</code>ループを使用して動的に<strong>ビルド</strong>に苦労していたカスタムフィルタに渡すことにより、ドキュメントのリストをフィルタリングする必要があるforeachループ
- 5. AsyncInvokerは、私はジャージー2.0を使用して<code>AsyncInvoker</code>を使用していますスレッド
- 6. フィルタリスト私は<code>Fruit</code>のリストを持っている
- 7. PHP foreachがループしない
- 8. C#でforeachループでカウンター
- 9. Array(n).forEachループがn回繰り返されないのはなぜですか? 3.</p> <p><code>[1, 2, 3].forEach</code>の<code>length</code>を有する
- 10. foreachループでと言って</p> <pre><code>FormCollection formsList = Application.OpenForms; </code></pre> <p>を使用して、メインメニュー以外のすべてのフォームを閉じようとC#の
- 11. C#foreachループでMongoDBのQueryとQueryBuilderを使用するには?
- 12. foreachループでdatatableを使用する
- 13. foreachループでコレクションを使用する
- 14. JSFでforeachループを使用する
- 15. foreachループでオブジェクトを作成する
- 16. phpのforeachループでのコーディングを使用しています
- 17. Vector <vector <string>>に読み込むループが動作しないのはなぜですか? Linux C++
- 18. ForEach for forループを使用しないで変換しますか?
- 19. WPF DataGridを使用したループ処理foreachを使用した
- 20. "foreach" VS "List <T> .Foreach" ... which wins
- 21. 重複したデータを返すSimpleXMLオブジェクトのxPathを使用したForeachループ
- 22. C#:ランタイム生成リストでForEachを呼び出す<T>
- 23. オブジェクトは、私は自分のアプリケーションで<code>infragistics</code><code>igGrid</code>を使用しているが、私は</p> </blockquote>「_super」プロパティまたはメソッドをサポートしていません<code>javascript</code>エラー</p> <blockquote> <p>オブジェクトを取得しています<p>igGrid
- 24. C#Foreachループが期待通りに機能しない
- 25. .Net - リストはいつですか<T> .ForEachは標準のforeachループよりも優先されますか?
- 26. C#CheckedListBox foreachループのInvalidOperationException
- 27. C#MVC foreachループ問題
- 28. Foreachループの変数を使用する
- 29. C#Compact Frameworkでは、私は<strong>Compact Frameworkの2.0 SP1</strong>にdevolpingていると私は<strong>Math.Sinh</strong>を使用しようとすると、私ならば、それは<em>サポートされていない例外</em></p> <p>私をスローMath.Sinh
- 30. C言語でstringArrayでforeachループを使う#
いい解決策ですが、これは内部的にforeachを使用しません。私はKthevarが自分自身を反復したくないということを意味していましたが、 – RobV
lamdasの新機能、myList.FindAll(l => l.Length> 5)をどうやってやればいいのですか? –
@RobV: for 'ループを内部的に実行します。もし私が間違っているなら、私を訂正してください。 – Razzie