在 LINQ 中排序和分组
我有一个字符串元组列表,比如 (P1,P2)
我想知道是否有一个 LINQ 语句,我可以按 P1 进行分组(按升序排列),并让该组包含该组的所有 P2 值(按降序排列)。
对于输入:(“A”,“B”),(“A”,“C”),(“D”,“B”) 我想要两组:“A”和“D”(每次都按这个顺序) 其中“A”组包含“C”和“B”(每次都按此顺序),“D”组包含“B”。
这可以通过内置 LINQ 类实现吗?或者我是否需要迭代这些组并自己对它们进行排序?
I have a list of string tuples, say (P1,P2)
I'd like to know if there's a LINQ statement where I could group by P1 (in ascending order), and have that group contain all the P2 values for the group (in descending order).
For input: ("A","B"), ("A","C"), ("D","B")
I'd like to get two groups: "A" and "D" (in that order, every time)
where group "A" contains "C" and "B" (in that order, every time) and group "D" contains, well, "B".
Is this possible with the built-in LINQ classes or do I need to iterate the groups and sort them myself?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,这并不难 - 您只需要跟踪您是否正在查看组或组内的元素。这是一个示例查询:
这是一个完整的示例(如果您使用 .NET 3.5,则为了简单起见,请避免使用 .NET 4 的
Tuple
类型):请注意,如果您愿意,它可以稍微简单一些基于“需要知道”的订购:
Nope, it's not hard - you just need to keep track of whether you're looking at a group or elements within the group. Here's a sample query:
Here's a complete example (avoiding .NET 4's
Tuple
type just for simplicity if you're using .NET 3.5):Note that it can be slightly simpler if you're happy to do the ordering on a "need to know" basis: