Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将C#数据集拆分为多个数据集_.net_Dataset - Fatal编程技术网

.net 将C#数据集拆分为多个数据集

.net 将C#数据集拆分为多个数据集,.net,dataset,.net,Dataset,我有一个现有的应用程序,它将文本文件转换为数据集,然后传递给另一个方法进行处理。到目前为止,文本文件始终用于1个位置(内部客户端引用) 客户机现在有第二种文件格式,其中包含多个位置。我想从这个新文件中获取返回的数据集,并根据文件中的位置字段将其转换为数据集数组。这将允许我们利用现有的方法,为单个位置接受数据集 .Net中是否有内置方法允许我将数据集拆分为多个数据集,或者我必须自己创建此逻辑?不,没有内置方法,您的要求非常模糊。但我会给你一个想法 您已经提到位置字段是键,每个唯一的位置都应该有自己

我有一个现有的应用程序,它将文本文件转换为数据集,然后传递给另一个方法进行处理。到目前为止,文本文件始终用于1个位置(内部客户端引用)

客户机现在有第二种文件格式,其中包含多个位置。我想从这个新文件中获取返回的数据集,并根据文件中的位置字段将其转换为数据集数组。这将允许我们利用现有的方法,为单个位置接受数据集


.Net中是否有内置方法允许我将数据集拆分为多个数据集,或者我必须自己创建此逻辑?

不,没有内置方法,您的要求非常模糊。但我会给你一个想法

您已经提到位置字段是键,每个唯一的位置都应该有自己的
数据集。然后您应该填写一个
列表
。您可以使用LINQ从文件中读取所有行并按其分组:

List<DataSet> dataSets = new List<DataSet>();
DataSet datasetSample = new DataSet();
// add table(s) with columns here
char separator = '\t';  // replace with actual separator
var locationGroups = File.ReadLines("Path")
    .Select(l => new { arr = l.Split(separator), line = l })
    .Select(x => new { x.arr, x.line, location =  x.arr[0].Trim() }) 
    .GroupBy(x => x.location);

注意,我假设location是行中的第一个字段,相应地更改它。

您知道
数据集
只是一个或多个
数据表
的容器吗?因此,您可以向
数据集添加另一个表。除此之外,您应该添加更多的上下文或代码,否则很难提供比一般语句更多的内容。嗨,蒂姆,我知道一个数据集包含1个或多个数据表。在本例中,我尝试获取一个具有1个表的数据集,并将其拆分为具有1个表的多个数据集。使用这种方法的唯一原因是现有方法已经使用了已传递的Dataset对象,因此不需要更多的编码。Tim,感谢您推荐这种方法,因为它可以完美地工作。我甚至不知道LINQ可以读取文件,因为我只在数据库中使用过它。
foreach (var locationgroup in locationGroups)
{ 
    DataSet ds = datasetSample.Clone(); // clones only table-schemata, no data
    DataTable tbl = ds.Tables[0]; // you've mentioned that there is just one table
    foreach (var location in locationgroup)
    {
        tbl.Rows.Add(location.arr);
    }
    dataSets.Add(ds);
}