2009-04-17 5 views
10

現在私にとって、LINQは、通常はデータアクセスだけでなく、ラムダ式、デリゲート、匿名関数、および拡張メソッドと組み合わせて、概念の緩やかで非晶質なクラウドであり、文字列やコレクションの操作に関するものなので、それはダウン。List.ForEachは技術的にLINQの一部ですか?そうではありませんか?

次のコードを記述すると、「LINQを使用していますか」ということはできますか?

List<string> words = new List<string>() { "one", "two", "three" }; 
words.ForEach(word => Console.WriteLine(word.ToUpper())); 

"ForEach"メソッドは広く "LINQメソッド"と呼ばれますが、そのホームはSystem.Collections.Generic.Listではなく、System.Linqにあります。

+0

ニートの質問は、私が思ってきたいくつかのことを明確にしています。 +1。 –

答えて

12

LINQの一部ではありません.LINQの一部ではありません.LINQの前には.NET 2.0に存在していました。それはLINQのようなものですが、LINQの一部だとは言いません。一方

、あなたが 非標準のLINQの演算子と見なすことができること(MoreLINQのように)自分自身の IEnumerable<T>拡張メソッド ForEach ...

+0

curses、私の直前。 –

-2

レジュームキーワードとしてLINQを正当化しようとしている場合は、おそらくいいえ。しかし、その機能はLinqの機能の残りの部分で追加され、機能の同じファミリにあります。したがって、sortof:

+2

IList .ForeachはLINQで追加されませんでした。それは.NET 2.0に存在していました。 – Samuel

3

のForEachがLINQでないを実装する場合、それだけですデリゲートを取るメソッド。 .NET 2.0以来存在しています。

0

投稿した例では、LINQを使用していません。 ForEachメソッドは、ループを明示的に記述しなくても、列挙可能なデータ型の項目を反復処理するのに便利です。

1

デリゲートを取得してもLINQにはなりません。

Foreachは "LINQ"メソッドではなく、EnumerableまたはQueryableのメンバではありません。そのための理解構文はありません。

そして、とりわけ、LINQ to Objectsのようなものではないソース(リスト)を変更します。

私は「いいえ」と言います。

2

Linqは「言語統合クエリ」を意味します。

var result = from word in words 
       where word.Length < 5 
       select word; 

が言った、 IEnumerableを+遅延評価+ lamdba表現+閉鎖のシステムLINQは、それ自体で十分に重要であるに依存している:本当にLINQを「使用」であるために、あなたはこのような構造のものが必要それが自分の流行語であることを保証する。あなたがラムダ式を使うことができると言ってもそれは本当にカットされません。このサンプルがポイントです。あなた 使用LINQが、なぜこれは同じように素晴らしく、非常に短いときにできます。

var result = words.Where(w => w.Length < 5); 
+0

私はLINQを使うことは名前空間を使うことを意味すると主張します。 lingを使用するためにクエリ構文を使用する必要はありません。あなたは 'var result = words.Where(x => x.Length <5);のような簡単なことができます。 –

関連する問題