LINQ是对.NET以来最伟大的改进之一,它可以节省大量的时间和代码行.但是,对于我来说,流畅的语法似乎比查询表达式语法更自然.
var title = entries.Where(e => e.Approved)
.OrderBy(e => e.Rating).Select(e => e.Title)
.FirstOrDefault();
var query = (from e in entries
where e.Approved
orderby e.Rating
select e.Title).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
这两者之间是否有任何区别,或者一方面有什么特别的好处呢?
我一直在深入研究LINQ,而我正在努力挖掘这个lambda表达式业务.我只是没有看到语法的一些细微差别的好处.首先,在我看来,lambda表达式大多只是使用Where子句的另一种方式.为什么我不会只使用Where子句呢?lambda表达式更有效吗?
是否只是另一个语法上的补充,从另一个组中吸引程序员在C#中感觉更舒服?还有其他更好的用于lambda表达式的用例,我还没有接触过吗?
我觉得LINQ有点困难.我喜欢这个概念,并相信它有很大的潜力.但是,在编写了这么多SQL之后,语法对我来说并不容易.
A. 有多种方式可以选择什么?
我看到我能够创建一个上下文并使用方法执行Select().
context.Table.Select(lamba expression);
Run Code Online (Sandbox Code Playgroud)
好的......我为什么要用这个?它与这种类型的选择相比如何?
var returnVal = from o in context.Table
orderby o.Column
select o;
Run Code Online (Sandbox Code Playgroud)
B.请解释一下变量的性质
Run Code Online (Sandbox Code Playgroud)**from X** in context.Table
为什么我们在这里贴上一个看似任意命名的变量?这不应该是一种已知的类型<Table>
吗?
我的项目目前用于"linq"的以下语法
var le = domainModel.EntityDataContext.Table_name_here.Query()
.WithFullReadCheck(domainModel.Security)
.Where(x => x.Metadata.AdvisorID == advisorId).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
据说上面的代码是linq,没有意识到linq我决定学习它.但是,在https://msdn.microsoft.com/en-us/library/gg509017.aspx上,情况完全不同.
我的代码中使用了什么?它是linq的一个版本吗?还有别的吗?
我有遵循LINQ to SQL查询表达式
from msg in TblUserMessages
join user in Aspnet_Users on msg.FromUserID equals user.UserId
select new {
msg.FromUserID,
msg.ToUserID,
msg.MessageLocationID,
msg.MessageID,
user.UserName
}
Run Code Online (Sandbox Code Playgroud)
并遵循LINQ方法表达式:
TblUserMessages
.Join (
Aspnet_Users,
msg => msg.FromUserID,
user => user.UserId,
(msg, user) =>
new
{
FromUserID = msg.FromUserID,
ToUserID = msg.ToUserID,
MessageLocationID = msg.MessageLocationID,
MessageID = msg.MessageID,
UserName = user.UserName
}
)
Run Code Online (Sandbox Code Playgroud)
这两个都返回相同的结果集.这是例如:
82522f05-2650-466a-a430-72e6c9fb68b7
6b2a174a-8141-43d2-b3ad-5b199bcbfcae
1
1
waheed
Run Code Online (Sandbox Code Playgroud)
哪一个更好用.在FIRST
一个或SECOND
一个.
谢谢
在这两个语句中,我试图获取具有变量中指定名称的Category的ID;
两者都很好.有什么不同,哪个更好?
string name = "Progreammers";
var categoryID = from c in DataContext.Categories
where c.Name == name
select c.CategoryID;
var categoryID =
DataContext.Categories.Single(c => c.Name == name).CategoryID;
Run Code Online (Sandbox Code Playgroud)
编辑:表中的每个CategoryID(字段)只有一个名称(字段).
Linq中两种排序方法有什么区别?是否比其他表现明智?