如果有时间使用标准linq关键字或linq扩展方法与lambda表达式,我正试图处理.他们似乎做同样的事情,只是写得不一样.这纯粹是风格问题吗?
var query = from p in Products
where p.Name.Contains("foo")
orderby c.Name
select p;
// or with extension methods:
var query = Products
.Where(p => p.Name.Contains("foo"))
.OrderBy(p => p.Name);
Run Code Online (Sandbox Code Playgroud)
他们非常相似,第二个例子更简洁,但如果你不知道=>在做什么,可能会表现得更差.
除了编写简洁的代码之外,使用扩展方法而不是LINQ语法还有其他优点吗?
我开始一般使用LINQ(到目前为止使用XML和toSQL).我已经看到有时候有两种或更多种方法可以达到相同的效果.拿这个简单的例子,据我所知,两者都返回完全相同的东西:
SomeDataContext dc = new SomeDataContext();
var queue = from q in dc.SomeTable
where q.SomeDate <= DateTime.Now && q.Locked != true
orderby (q.Priority, q.TimeCreated)
select q;
var queue2 = dc.SomeTable
.Where( q => q.SomeDate <= DateTime.Now && q.Locked != true )
.OrderBy(q => q.Priority)
.ThenBy(q => q.TimeCreated);
Run Code Online (Sandbox Code Playgroud)
除了我在语法中可能犯的任何错误或缺少参数或差异之外,我们的想法是有两种表达同一事物的方法; 我知道第一种方法有一些局限性,"点符号"更完整,但除此之外,还有其他优点吗?
我在我的ASP.NET,C#,Web应用程序中使用实体框架.如果我需要从DataBase中选择一条记录(在数据访问层中),我应该使用哪种方法?Linq查询还是Lambda表达式?
例如:-
//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);
Run Code Online (Sandbox Code Playgroud)
在这种情况下是否有任何首选方式或其他优势?