问题标签 [linq-to-objects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3041 浏览

linq - 有没有一种 linq-y 方法来联合对象集合的集合属性?

对不起,这个标题很伤人。我想知道是否有一个 Linq to collections 扩展方法将以下代码段折叠成一行:

如果您可以将其合并为一个语句,请在疯狂的难度下尝试:

0 投票
4 回答
1723 浏览

linq - Linq to XML 'Where not in' 语法问题

以下代码无法编译

它应该删除根节点的任何直接子节点,该子节点具有名为 name 的属性,其值在 BasicGroups StringArray 中列出。

此任务的正确语法是什么?

0 投票
3 回答
6796 浏览

linq - 使用 Linq 或 Lambda 表达式检查复杂对象中的重复项

我刚刚开始学习 linq 和 lambda 表达式,它们似乎非常适合在复杂的对象集合中查找重复项,但我有点困惑,希望有人能帮助我回到快乐编码的道路上.

我的对象的结构类似于 list.list.uniqueCustomerIdentifier

我需要确保整个复杂对象中没有重复的 uniqueCustomerIdentifier。如果有重复项,我需要确定哪些重复项并返回重复项列表。

0 投票
3 回答
461 浏览

linq - 挑战:优雅地 LINQify 这段程序代码

必须保留的显着特征:

  • 类型 1 的文件比类型 2 的文件更重要;即,如果类型 1 的文件映射到 (key, value1) 组合,类型 2 的文件映射到 (key, value2) 组合,那么我们将 (key, value1) 添加到 cookieMap 而不是(key, value2)。编辑:正如 Bevan 所指出的,我原来的程序代码对此并不满意。
  • 其次,具有更高优先级CookieContainer的 sCount具有更高的优先级,即如果同一键有两个(键,值)组合并且都来自相同的文件类型,我们选择具有更高的一个value.Count
  • 每个案例的异常处理是必须的;搞砸一个文件阅读应该只是让我们注意到这一点并继续。

我最好的尝试是这样开始的:

但这很不雅,并且填写该评论块似乎是个婊子。现在我很高兴保持程序化,但我认为看看人们是否能想出一些非常聪明的东西可能是一个有趣的挑战。

0 投票
4 回答
1363 浏览

c# - 时间序列的“加入”

我正在设计一个简单的内部框架来处理时间序列数据。鉴于 LINQ 是我目前的玩具锤,我想用它击打所有东西。

我想在 TimeSeries 类中实现方法(Select()、Where() 等),这样我就可以使用 LINQ 语法来处理时间序列数据

有些事情是直截了当的,例如(从 A 中的 x 选择 x+10),给出一个新的时间序列。

组合两个或多个时间序列的最佳语法设计是什么?(from a in A from b in B select a+b) 不是很好,因为它表示一个嵌套循环。也许有人加入?这应该对应于隐式时间变量的连接。(我想到的对应 lisp 'zip' 功能)


编辑: 一些澄清是必要的。

时间序列是一种依赖于时间的函数,例如股票报价。时间序列的组合可能是两个股票价格之间的差异,作为时间的函数。

是可能的,但是可以使用一些 LINQ 语法巧妙地表达吗?我期待自己实现 LINQ 方法class MyTimeSeries

0 投票
6 回答
3159 浏览

c# - 从另一个集合中的一个集合中删除项目

我有两个集合(通用列表),我们称它们为 ListA 和 ListB。

在 ListA 中,我有一些 A 类型的项目。在 ListB 中,我有一些 B 类型的项目,它们的 ID 与 ListA 中的项目相同(但类型不同),还有更多。我想从 ListB 中删除与 ListA 中具有相同 ID 的所有项目。这样做的最佳方法是什么?Linq to objects 是不是很合适?你会使用什么算法?

例子

ListA:ItemWithID1,ItemWithID2¨

ListB:ItemWithID1、ItemWithID2、ItemWithID3、ItemWithID4

编辑:我忘了在我原来的问题中提到 ListA 和 ListB 不包含相同的类型。因此,比较它们的唯一方法是通过 .Id 属性。这使我到目前为止得到的答案无效。

0 投票
3 回答
190 浏览

vb.net - 检索具有最长字符串长度的成员变量的对象

给定一个包含字符串成员变量的对象的通用列表,获取包含最长长度字符串的对象的最佳方法是什么?

IE。假设 val1 是我正在比较的字符串:

需要返回的是对象 2,因为“aba”的长度最大。

0 投票
3 回答
13933 浏览

asp.net - 使用 LINQ 进行递归控制搜索

如果我想在 ASP.NET 页面上找到选中的复选框,我可以使用以下 LINQ 查询。

如果复选框嵌套在当前控件集合中,那效果很好,但我想知道如何通过深入到顶级控件的控件集合来扩展搜索。

问题在这里被问到:

在 ASP.NET 中查找使用特定接口的控件

并且收到了非 LINQ 的答案,我已经有了自己的类型和 ID 递归控制搜索版本作为扩展方法,但我只是想知道这在 LINQ 中有多容易?

0 投票
3 回答
2653 浏览

c# - 对 LINQ 有一些困惑

一些背景资料;

  • LanguageResource 是基类
  • LanguageTranslatorResource 和 LanguageEditorResource 继承自 LanguageResource
  • LanguageEditorResource 定义了一个 IsDirty 属性
  • LanguageResourceCollection 是 LanguageResource 的集合
  • LanguageResourceCollection 在内部将 LanguageResources 保存在Dictionary<string, LanguageResource> _dict
  • LanguageResourceCollection.GetEnumerator() 返回_dict.Values.GetEnumerator()

我有一个 LanguageResourceCollection _resources,它只包含 LanguageEditorResource 对象,并且想使用 LINQ 来枚举那些脏的,所以我尝试了以下方法。我的具体问题以粗体显示。

  1. _resources.Where(r => (r as LanguageEditorResource).IsDirty)

    Intellisense 没有显示其他 LINQ 方法,但我还是对其进行了编码,并被告知“LanguageResourceCollection 不包含'Where'的定义并且没有扩展方法......”。

    为什么 LanguageResourceCollection 实现 IEnumerable 的方式使其无法支持 LINQ?

  2. 如果我将查询更改为

    (_resources as IEnumerable<LanguageEditorResource>).Where(r => r.IsDirty)

    Intellisense,则会显示 LINQ 方法并且解决方案会编译。但是在运行时我得到一个 ArgumentNullException “值不能为空。参数名称:源”。

    这是我的 LINQ 代码中的问题吗?
    类的一般设计有问题吗?
    如何深入研究 LINQ 生成的内容以尝试查看问题所在?

我对这个问题的目标不是为特定问题找到解决方案,因为我现在必须使用其他(非 LINQ)方法来解决它,而是尝试提高我对 LINQ 的理解并学习如何改进设计我的课程可以更好地使用 LINQ。

0 投票
3 回答
1494 浏览

c# - 使用 linq 更新对象的性能更好

我有两个自定义对象列表,如果另一个列表中有一个与另一对字段匹配的对象,我想更新一个列表中所有对象的字段。

这段代码更好地解释了问题并产生了我想要的结果。然而,对于较大的 20k 列表和具有匹配对象的 20k 列表,这需要相当长的时间(31 秒)。通过使用通用列表 Find(Predicate) 方法,我可以将这一点提高约 50%。

期望的结果是:Alfa total=2,Beta total=4,Gamma total=8

但我想知道这是否有可能做得更快。即使在结果集中循环超过 20k 个项目时,内部加入这两个列表也需要很少的时间。

所以我的问题是,是否有可能像使用 T-SQL 那样做一些事情?对调整值使用 ISNULL(val,0) 的左连接的 UPDATE。