9

ASP.NET、C#、Web アプリケーションで Entity Framework を使用しています。データベース (データ アクセス層) からレコードを選択する必要がある場合、どの方法を使用すればよいですか? Linq クエリまたはラムダ式?

例えば:-

//Linq        
var result = from a in db.myTable.Take(1) where a.Id == varId  select a;
return result.First();

//Lambda
return db.myTable.FirstOrDefault(a => a.Id == varId);

このシナリオで優先される方法や、他の方法よりも有利な方法はありますか?

4

5 に答える 5

7

Linq クエリ構文は、式メソッドの単なる構文糖衣です。式メソッドにコンパイルされた任意の Linq クエリ。あなたの最初のクエリで:

var query = from a in db.myTable.Take(1) 
            where a.Id == varId  
            select a;
return query.First();

に等しい

return db.myTable.Take(1).Where(a => a.Id == varId).First();
于 2013-04-24T07:12:39.700 に答える
4

あなたの試みはどちらもLinqを使用しています。

1 つ目は 1 つのレコードを取得し、ID が一致するかどうかを確認します。

2 番目は、id が一致する最初のレコードを取得します。

それは違いです。

于 2013-04-24T07:13:05.400 に答える
0

Every query expression can be expressed as C#-code using calls to query operators as extension methods. But the opposite is not true; only a small subset of the standard query operators can be used as keywords in query expressions. In other words query expressions have some limitations that the method-call mechanism does not have:

  1. Some query operators have simply no C# query expression equivalent, e.g. ToArray().
  2. We can't use all kinds of overloads in C#'s query expressions. E.g. there is an overload of Select() that awaits the index of the currently iterated object; you cannot call this overload within a query expression.
  3. We can't use statement lambdas in query expressions. - This is the cause why object and collection initializers have been introduced into the C# language.
于 2015-02-08T10:00:01.123 に答える