如何使用LINQ将一个阵列划分为多个阵列?

基斯·巴克(Kees C. Bakker)

为了解释问题,我创建了一个简化的示例。在现实生活中,数据类有些复杂。考虑以下数据类:

public class Data
{
    public Data(string source, string path, string information)
    {
        this.Source = source;
        this.Path = path;
        this.Information = information;
    }           
    public string Source { get; set; }
    public string Path { get; set; }        
    public string Information { get; set; }
}

现在考虑以下数组:

var array = new Data[] {
    new Data("MS", @"c:\temp\img1.jpg", "{a}"),
    new Data("IBM", @"c:\temp\img3.jpg", "{b}"),
    new Data("Google", @"c:\temp\img1.jpg", "{c}"),
    new Data("MS", @"c:\temp\img2.jpg", "{d}"),
    new Data("MS", @"c:\temp\img3.jpg", "{e}"),
    new Data("Google", @"c:\temp\img1.jpg", "{f}"),
    new Data("IBM", @"c:\temp\img2.jpg", "{g}")
};

我想通过对进行分区并对上的Path每个分区进行排序来处理数据Source输出需要像这样:

c:\temp\img1.jpg
"Google":   "{c}"
"IBM":      "{f}"
"MS":       "{a}"

c:\temp\img2.jpg
"IBM":      "{g}"
"MS":       "{d}"

c:\temp\img3.jpg
"IBM":      "{b}"
"MS":       "{e}

如何使用LINQ创建这些分区?

在这里您可以使用以下代码:https : //dotnetfiddle.net/EbKluE

查尔斯·玛格(Charles Mager)

您可以使用LINQOrderByGroupBy来对项目进行排序,Source并按以下顺序对订购的项目进行分组Path

var partitioned = array
    .OrderBy(data => data.Source)
    .GroupBy(data => data.Path);

看到这个小提琴演示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按小时将阵列划分为多个阵列

将多个阵列合并为一个阵列

多个阵列成一个阵列

如何正确使用一个“当前”阵列来管理多个阵列?

如何使用Rayon将大范围划分为多个范围,并在一个范围内找到每个线程?

将多个阵列合并为一个2D阵列

将多个阵列连接到一个没有重复的阵列中

QTP/UFT - 在一个阵列中存储多个阵列

如何将两个阵列(阵列1d和阵列2D)合并成一个对象使用lodash

过滤后将阵列合并到一个阵列

如何将阵列键名称与另一个阵列键名称匹配

将阵列推入另一个阵列时,如何防止展平?

使用 whereArrayContains 将 Firestore 阵列与另一个 Firestore 阵列进行比较

如何用一个阵列包围阵列?

使用std :: copy将一个阵列复制到另一个阵列

将阵列推入一个阵列,然后循环遍历新阵列

如何将一个列表划分为一个较小的列表

如何尽可能平衡地将一个主阵列的元素分布到另外 2 个阵列?

将一个范围划分为 x 个范围

如何将一个for循环划分为几个循环并使用线程运行它们以缩短运行时间?

一个如何将1D阵列复制到另一1D阵列和2D阵列?

使用vb.net将阵列列表值复制到另一个阵列列表中

将多个矩阵列表的内容重塑为一个数据帧

选择一个阵列?

将元组划分为一个系列

写入多个磁盘阵列到一个ArrayList

一个纹理阵列的多个采样器

迅速,从一个阵列连续播放多个动画?

跨多个mdadm阵列的一个LVM卷