web-dev-qa-db-ja.com

Trim()動的クエリ言語を使用して文字列のリストを作成し、トリミングされたIQueryable <string>を生成します。

これは可能ですか、それともコードを過度に短くしようとしているだけですか?

私はそれが次のようなものかもしれないと思いました:

IQueryable<string> trimmedStrs = untrimmedStrsArr.AsQueryable<string>().All(s => s.Trim());

しかし、それは良くありません:(

18
Matt W

私はあなたがちょうど欲しいと思います:

IEnumerable<string> trimmed = untrimmedStrsArr.Select(s => s.Trim());

リストや配列などのメモリ内コレクションがある場合は、IEnumerable<T>のLINQメソッドを使用してそれらを操作できます。これは、これらがメモリ内のデータを処理するためです。 Queryableは、データベースを操作する場合(LINQ to SQLを使用する場合など)に役立ちます。

[〜#〜] msdn [〜#〜] で、さまざまな方法に関する優れたドキュメントを見つけることができます。以下に、SelectではなくAllが必要な理由を説明します。

  • All-シーケンスのすべての要素が条件を満たすかどうかを決定します。
  • Select-シーケンスの各要素を新しい形式に投影します。
52
Tomas Petricek

これは私のために働いているようでした:

IQueryable<string> trimmed = untrimmed.AsQueryable<string>().Select(m => m.Trim());
2
Robaticus

Allはこれを行うための正しい方法ではありません。これは述語であり、コレクション内のすべての項目がパラメーターで指定した条件に一致する場合にtrueを返します。使用する

IQueryable<string> trimmedStrs = untrimmedStrsArr.AsQueryable<string>().Select(s => s.Trim()); 
2
Jens