2016-11-17 9 views
0

、その結果によって構築するとき、私は異なる結果を得るC#のエンティティLINQとlinqpad違い

これはLinqPadに動作しますが、コード

Name = s.Key.FirstName + " " + s.Key.LastName ?? "Unknown User" 

にこのコードではなくLinqPad

で動作しません
Name = s.Key.FirstName != null ? s.Key.LastName + " " + s.Key.LastName : "Unknown User" 

これは、両方の

Name = String.IsNullOrEmpty(s.Key.FirstName) ? "Unknown User" : s.Key.FirstName + " " + s.Key.LastName, 
で動作します

誰でも説明できる理由

+6

は、このデータベースを押す、または単にメモリクエリでいますか? LINQPadはデータベースに当たっていると、[Linq2Sql](https://msdn.microsoft.com/en-us/library/bb425822.aspx)を使用しますが、アプリケーションがエンティティフレームワークを使用している可能性があります。 – Rob

+0

はいデータベースを使用しています –

+0

Linqpadは学習のスピードを上げるツールではありません。なぜマイクロソフトの公式のものを試してみませんか:[101 LINQ Samples](https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b) –

答えて

1

LinqPadはデフォルトでLinq2Sqlを使用しています。

LINQの違いは、EFLinq2Sqlの間にあります。それはほぼ確実に実行していることです。

LINQは、実際に作成されたクエリを実行するプロバイダーに基づいて、異なる動作をします。

  • LINQのは、イベント(Reactive Extensions
  • のLINQをXMLにオブジェクトへ
  • LINQの

    • Linq2Sql
    • Entity Frameworkの: あり、これよりももっと多くのですが、それはスタートです

      あなた自身で書くことができますLINQ providers

      あなたはEFライブラリを追加するLinqpadを伝える場合、それはあなたが作成するものを消費しますが:

      adding an EF context to linqpad

  • 関連する問題