c# - 我是否遗漏了有关 LINQ 的信息?

标签 c# sql linq

我似乎遗漏了有关 LINQ 的一些信息。在我看来,这似乎是将我最不喜欢的一些 SQL 元素转移到 C# 语言中并将它们用于其他用途。

我的意思是,我可以看到在数据库以外的事物上使用类似 SQL 语句的好处。但是,如果我想编写 SQL,那么,为什么不直接编写 SQL 并将其放在 C# 之外呢?我在这里缺少什么?

最佳答案

LINQ 与 SQL 无关。 LINQ 是关于在对象上应用函数式编程范例。

LINQ to SQL 是建立在 LINQ 基础之上的 ORM,但 LINQ 远不止于此。我不使用 LINQ to SQL,但我一直使用 LINQ。

执行查找两个列表的交集的任务:

在 LINQ 之前,此任务需要编写一个嵌套的 foreach,它为大列表 O(N*M) 中的每个项目迭代一次小列表,大约需要 10 行代码。

foreach (int number in list1)
{
    foreach (int number2 in list2)
    {
        if (number2 == number)
        {
            returnList.add(number2);
        }
    }
}

使用 LINQ,它在一行代码中完成同样的事情:

var results = list1.Intersect(list2);

您会注意到它看起来不像 LINQ,但它确实像。如果您不想,则不需要使用表达式语法。

关于c# - 我是否遗漏了有关 LINQ 的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21280/

相关文章:

c# - MSTest、MyClassInitialize 和实例变量

javascript - jQuery 验证一次调用中远程解析两个字段?

sql - 将多种格式的字符串转换为单一标准格式

c# - ASP.Net 网站外部和内部用户的不同错误页面

c# - 在单个查询中根据条件 ("where") 对数据进行分区?

c# - 从列表中删除不常见的项目

c# - 使用 LINQ 或 Entity Framework 拆分数据表以列出对象 C#

c# - C# 是否具有与 Objective-c 的类别等效的功能?

c# - SaveFileDialog不显示在新线程中吗?

c# - 比较泛型 : A "master-type" IEnumerable<> that is generic, 但匹配所有特定类型(IEnumerable<int>、IEnumerable<object>、...)?