我有一个数据表:
var dt = new DataTable();
dt.Columns.Add(new DataColumn("specimen", typeof(string)));
dt.Columns.Add(new DataColumn("batch", typeof(string)));
dt.Columns.Add(new DataColumn("position", typeof(string)));
Run Code Online (Sandbox Code Playgroud)
数据看起来像这样:
Spec. ID Batch/Pos. position
AA00721 16785 3
AA00722 16785 2
AA00734 16785 3
AA00735 16860 6
AA00737 16862 4
AA00738 16860 7
AA00739 16863 5
AA00740 16860 9
AA00741 16861 7
AA00742 16861 0
AA00743 16861 5
Run Code Online (Sandbox Code Playgroud)
对于每个唯一批处理,我需要创建一个包含所有specID和位置的文件.
例如文件16785.txt将如下所示:
AA00721 3
AA00722 2
AA00734 3
Run Code Online (Sandbox Code Playgroud)
我将如何循环通过此数据表来创建单独的文件>?请假设批号没有排序
如果您想使用LINQ方法,我会将您的数据分组到批处理中,然后只是遍历组.
var groupedData = from DataRow row in dt.Rows
let specimen = row["specimen"].ToString()
let batch = row["batch"].ToString()
let position = row["position"].ToString()
group new { specimen, position } by batch;
foreach (var dataGroup in groupedData)
{
string fileName = string.Format(@"C:\Temp\{0}.txt", dataGroup.Key); // construct filename based on batch?
using (StreamWriter writer = new StreamWriter(fileName))
{
foreach (var item in dataGroup)
{
writer.WriteLine("{0}\t{1}", item.specimen, item.position);
}
}
}
Run Code Online (Sandbox Code Playgroud)