我知道linq如何工作,但我不知道我应该在哪里使用linq?
答案 0 :(得分:12)
问题就像问“我知道加减工作是怎么做的,但我什么时候使用加法?什么时候使用减法?”
当你想知道两件事的总和时,你想使用加法,当你想知道它们之间的差别时。
基本上所有LINQ都会将操作符添加到C#和VB语言中,以进行排序,过滤,投影,连接和分组。你什么时候使用LINQ?当您想要排序,过滤,投影,加入或分组时。
答案 1 :(得分:6)
我说使用LINQ .. 绝对任何地方它将有助于以简洁和可维护的方式实现您的目标。
没有广泛使用或不使用限制,你真的必须判断手头的代码片段是否会受益于LINQ,一般来说一些旧的过于冗长的代码片段(嵌套循环等)可以在LINQ中更清晰地表达,并且可能是有益的。
应该注意LINQ NOT 是LINQ to SQL的同义词,LINQ代表语言集成查询,在数据库环境之外非常有用。
答案 2 :(得分:2)
当您必须使用IEnumerable(或在针对数据库的操作的情况下使用IQueryable)时,通常使用LINQ。 它使您的代码更清晰,更实用。
您可以使用它来替换for循环:
from i in Enumerable.Range(0, n)
where i % 2 == 0
select i;
而不是:
for (int i = 0; i < n; i++)
{
if (i % 2 == 0)
{
something.Add(i);
}
}
答案 3 :(得分:1)
你应该在适当的地方使用LINQ,因为它可以比传统的常见程序编程习语更具表现力和简洁性。
答案 4 :(得分:1)
您可以在多种情况下使用它,例如:
这些操作都需要使用Linq的代码少得多。
答案 5 :(得分:1)
LINQ是一个标准。除非您的团队预先建立并同意自定义图层,否则您制作的自定义图层不会。如果您的团队不会制作自定义图层,那么使用LINQ可能会缓解每个人都有自己的方式向数据库发出请求的问题。
答案 6 :(得分:0)
您可以随时在应用程序中过滤数据,而无需运行查询。这是一个查看如何使用它的示例的好地方。
答案 7 :(得分:0)
对我而言,它使我的代码更简洁,更易于维护。在任何地方使用它都可以访问或操作数据集,XML,列表等数据集合。
但请记住一些怪癖。
答案 8 :(得分:0)
在代码更强可读和可维护的地方。
在您处理数据集合并且想要转换,过滤,连接或排序的地方。
你不必使用LINQ,它不能解决所有问题。在某些情况下,它实际上可能比程序编程方式更差。
开始使用它,凭借时间和经验,您会感觉到它有意义且最有用。
答案 9 :(得分:0)
谢谢你的回答。 答案可能需要页面为什么linq?但在阅读了ceratin书之后, 如果我说LINQ和LINQ to SQL的主要目标是 摆脱,或至少减少关系数据库结构和面向对象之间的阻抗不匹配。调整C#语言比更改SQL或XML更容易。 使用LINQ,目标是深入集成数据查询和功能 将语言转换为编程语言。 LINQ消除了对象,数据库和XML之间的许多障碍。它 使我们能够使用相同的语言集成来处理这些范例中的每一个 设施。
我从书中得到答案* Linq In Action。 * 在第一章中清除了为什么linq。 这是一本非常好的书。
答案 10 :(得分:0)
让我们举个例子。您希望编写一个简单的查询来检索客户,如下所示:
SELECT UPPER(Name)
FROM Customer
WHERE Name LIKE 'A%'
ORDER BY Name
这看起来不太糟糕,对吧?但现在假设这些结果正在提供一个网页,我们想要只检索21-30行。突然间,你需要一个子查询:
SELECT UPPER(Name) FROM
(
SELECT *, RN = row_number()
OVER (ORDER BY Name)
FROM Customer
WHERE Name LIKE 'A%'
) A
WHERE RN BETWEEN 21 AND 30
ORDER BY Name
这里是LINQ中的相同查询。简单性的提升很明显:
var query =
from c in db.Customers
where c.Name.StartsWith ("A")
orderby c.Name
select c.Name.ToUpper();
var thirdPage = query.Skip(20).Take(10);
只有当我们枚举thirdPage时,查询才会实际执行。对于LINQ to SQL或Entity Framework,转换引擎会将查询(我们分两步编写)转换为针对其连接的数据库服务器优化的单个SQL语句。