VB.NetとC#のLINQ構文の違い

c# c#-to-vb.net linq vb.net
VB.NetとC#のLINQ構文の違い

Again、好奇心から:

VB.Netでいくつかのプロジェクトをプログラミングした後、驚いたことに、C#とVB.NET LINQの使用には微妙な違いがあることを発見しました。 たとえば、複数のプロパティ(列)で要素をグループ化する場合、新しい匿名型を明示的に作成する必要があります。

var procs = from c in Process.GetProcesses()
            group c by new {c.BasePriority, c.Id} into d
            select d;

一方、VB.NETでは、より簡単な構文で既に次のことができます。

Dim b = From c In Process.GetProcesses()
        Group c By c.BasePriority, c.Id Into Group
        Select Group

したがって、ここで「新規」のタイプを作成する必要はありません。

他の違いは何ですか? C#とVB.NETのLINQ構文に良い比較はありますか?

  13  5


ベストアンサー

私が知っているいくつかの違いがありますが、主にVB.NETのLINQにはいくつかの隠された宝石があります。

  1. 明示的にLINQ関連ではありませんが、VB.NETは
    匿名型。 これにより、匿名型を比較す​​るときに、匿名型のどのプロパティを使用するかを定義できます。 私がC#で伝えることができる限り;すべてを使用します。 VB.NETには、実際の利点があります。

  2. VB.NETは、キーワードとして「スキップ」操作をサポートしています。
    `Dim returnCustomers = InリストからnumToSkip Select aをスキップする`これはC#で実行できます。ただし、拡張メソッドを使用する必要があり、構文上の砂糖はありません。

  3. VB.NET LINQは、「Skip While」もサポートしています。
    「In aリストからsomeCondition Select aをスキップする」再び、C#はこれを行うことができます。ただし、拡張メソッドのみを使用します。

  4. および4.5 .:「Take」および「Take While」を除き、2および3と同じ

  5. VB.NETでは、 Select`キーワードはオプションです。 何を選択したい場合
    最新です; C#で `Dim shortWords = From l In list Where l.Length <10
    ;選択部分が必要です: var shortWords = from l from list where l.Length <10 select l

これらは、私が知っているVB.NETのLINQの追加の「機能」です。

例えば; C#の場合:

var skip10 = (from c in customers select c).Skip(10);

そしてVB.NETで

Dim skip10 = From c In Customers Skip 10

これらすべてのドキュメントは、http://msdn.microsoft.com/en-us/library/ksh7h19t(v = VS.90).aspxで参照できます。

15


これを見てみてください:

よろしく

1


タイトルとURLをコピーしました