如何使用C#中的数据集组

时间:2017-06-02 12:07:32

标签: c#

这是回答一般问题的具体问题。我正在尝试使用数据集组(这是从SQL查询中提取的)。

例如,我试图查找是否存在包所需的所有文件。

这是我的数据集:

Package       FilePath
Package1      fp1
Package1      fp2
Package2      fp3
Package2      fp4

...

我希望我的结果是:

Package      filesExist
Package1     true
Package2     false

检查文件不是我的问题。

我在询问如何使用数据集中的组。

谢谢。

1 个答案:

答案 0 :(得分:0)

所以你有一系列具有至少两个属性PackageFilePath的对象,如果所有文件都是FilesExists,你想要一个具有属性Package的对象的结果序列存在。

首先按包对数据集进行分组:

var groupsWithSamePackage = dataset.GroupBy(
    data => data.Package,          // make groups with same Package as Key
    data => data.FilePath);        // each group has FilePath as members

结果是一系列组,其中每个组都有一个带有Package值的Key,组中的所有项都是数据集中具有此Key的元素的FilePath:

key = Package1, items = {fp1, fp2},
key = Package2, items = {fp3, fp4},
key = ...,      items = all FilePaths with Package equal to key,

第二步是检查每个组以查看该组中是否存在所有FilePath:

var result = groupsWithSamePackage
    .Select(group => new
    {
        Package = group.Key,
        FilesExist = group.All(groupItem => FileExist(groupItem)
    });

完成,简单的纪念活动!