使用 Linq C# 为 DataTable 的每条记录创建 XML 文件

     2023-03-31     146

关键词:

【中文标题】使用 Linq C# 为 DataTable 的每条记录创建 XML 文件【英文标题】:create XML file for each record of the DataTable using Linq C# 【发布时间】:2017-02-15 07:05:31 【问题描述】:

目前我正在从单个 XML 文件中的数据表中的所有记录创建 XML 文件,我想使用 linq 分别为每个记录创建 XML 文件。

DataTable dtTest = new DataTable();
dtTest.Columns.Add("Name");
dtTest.Columns.Add("NickName");
dtTest.Columns.Add("Code");
dtTest.Columns.Add("reference");

dtTest.Rows.Add("Yash", "POPs", "Vapi", "None1");
dtTest.Rows.Add("shilpa", "shilpa", "valsad", "None2");
dtTest.Rows.Add("Dinesh", "dinu", "pune", "None3");
dtTest.Rows.Add("rahul", "mady", "pardi", "None4");

XDocument xmlDoc = new XDocument(
    new XElement(
        "File",
        from fields in dtTest.AsEnumerable()
        select new XElement(
            "company_details",
            new XElement(
                "company",
                new XElement(
                    "Name",
                    fields.Field<string>("Name")),
                new XElement(
                    "NickName",
                    fields.Field<string>("NickName"))),
            new XElement(
                "Details",
                new XElement(
                    "reference",
                    fields.Field<string>("reference"))))));

string filepath = @"C:\Users\admin\Desktop\test.xml";
xmlDoc.Save(filepath);  

【问题讨论】:

【参考方案1】:

您可以使用ForEach 方法为每个row 创建xml

DataTable dtTest = new DataTable();
dtTest.Columns.Add("Name");
dtTest.Columns.Add("NickName");
dtTest.Columns.Add("Code");
dtTest.Columns.Add("reference");

dtTest.Rows.Add("Yash", "POPs", "Vapi", "None1");
dtTest.Rows.Add("shilpa", "shilpa", "valsad", "None2");
dtTest.Rows.Add("Dinesh", "dinu", "pune", "None3");
dtTest.Rows.Add("rahul", "mady", "pardi", "None4");

dtTest.AsEnumerable().ToList().ForEach(x => CreateXml(x));

public void CreateXml(DataRow row)

  XDocument xmlDoc = new XDocument(
      new XElement(
          "File",
           new XElement(
               "company_details",
               new XElement(
                   "company",
               new XElement(
                   "Name",
                    row.Field<string>("Name")),
               new XElement(
                   "NickName",
                    row.Field<string>("NickName"))),
               new XElement(
                    "Details",
               new XElement(
                    "reference",
                     row.Field<string>("reference"))))));
  xmlDoc.Save(Server.MapPath(row.Field<string>("Name")) + ".xml");

【讨论】:

在 C# 中使用 Linq 创建一个仅包含唯一值的 DataTable

】在C#中使用Linq创建一个仅包含唯一值的DataTable【英文标题】:CreateaDataTablecontainingonlyuniquevalueswithLinqinC#【发布时间】:2020-11-2509:42:54【问题描述】:我有一个数据表dt_CandidatesCandidate|FirstName|LastName--------------------|----------------|--... 查看详情

使用 Linq C# 在 DataTable 中查找重叠的日期

】使用LinqC#在DataTable中查找重叠的日期【英文标题】:FindDateOverlappinginDataTableUsingLinqC#[duplicate]【发布时间】:2021-02-2607:13:27【问题描述】:我有一个包含startdate和enddate列的数据表。我想使用linq检查重叠的开始日期和结束日期。... 查看详情

C# 使用带有 where 子句的 Linq 查询作为 dataTable 上的变量

】C#使用带有where子句的Linq查询作为dataTable上的变量【英文标题】:C#UsingLinqQuerywithwhereclauseasvariableondataTable【发布时间】:2017-01-1216:48:57【问题描述】:我看到了不同的示例和问题,但我不知道如何成功编写此查询。where子句条... 查看详情

将 DataTable 转换为字典 C#

】将DataTable转换为字典C#【英文标题】:TransformaDataTableintoDictionaryC#【发布时间】:2013-11-1120:08:14【问题描述】:我想知道如何将DataTable转换为Dictionary。我做了这样的事情。usingSystem.Linq;internalDictionary<string,object>GetDict(DataTable... 查看详情

c#中的getenumerator方法,c#datatable几个常用的查询表达式,c#的linq怎么用干啥用的

...个对象,可以遍历访问集合类对象中的每一个元素对象2.DataTabledt=GetDetails().Tables[0];//获取可用的DataTable//varm=dt.AsEnumerable().Last<DataRow>();返回DataTable最后一行DataRow//varm=dt.AsEnumerable().First<DataRow>();返回DataTable第一行DataRow//var... 查看详情

c#中怎样用for循环为datatable的每一行每一列都赋值为“*”?

...p; table.Row[i][j]="*";    参考技术ADataTabletable=newDataTabel();DataRowrow=newDataRow();row.add("row");Columnc=newColumn();c.add("aaa");row.addColumn(c);table.addRow(row);大概思路就是这样的 参考技术Bforeach(varrintable.rows)fo... 查看详情

使用 DataContext 从 LINQ 查询中填充 DataTable 的最快方法

】使用DataContext从LINQ查询中填充DataTable的最快方法【英文标题】:FastestwaytofillDataTablefromLINQqueryusingDataContext【发布时间】:2011-02-1004:00:04【问题描述】:我正在尝试运行linq查询,但我需要将结果作为数据表,因为我使用它来将... 查看详情

如何在末尾使用空列值对 C# Datatable 进行排序

】如何在末尾使用空列值对C#Datatable进行排序【英文标题】:HowtosortC#Datatablewithemptycolumnvaluesattheend【发布时间】:2020-07-2906:46:47【问题描述】:我有一个包含1000行的C#数据表。但主要的200行有空值(多列)。过滤器会发生在这些... 查看详情

使用 linq 填充 DataTable 对象 [关闭]

】使用linq填充DataTable对象[关闭]【英文标题】:PopulateDataTableobjectusinglinq[closed]【发布时间】:2021-09-2410:03:26【问题描述】:我有一个DataTable对象,并在foreach循环中填充它。ForEach(DirectoryEntitydEntityinListOfEntities)Datatable.Rows.Add(dEntity... 查看详情

如何使用自己的 DataTable 类“Linq to DataTable”

】如何使用自己的DataTable类“LinqtoDataTable”【英文标题】:Howto"LinqtoDataTable"usingOwnDataTableClass【发布时间】:2020-12-0915:49:46【问题描述】:我怎样才能把这个linq查询产生的任何东西放到我自己的DataTable类中?publicclassMyData... 查看详情

第一次用linq,请教怎么把结果转化为datatable

参考技术A直接转定义成datatable。(DataTable)result;本回答被提问者和网友采纳 查看详情

将 SQL 语句转换为 DataTable 上的 LINQ 查询

】将SQL语句转换为DataTable上的LINQ查询【英文标题】:convertingaSQLstatementtoLINQqueryonaDataTable【发布时间】:2011-02-0703:00:08【问题描述】:我正在研究LinqtoDataTable,Lambda。因为很难想把sql改成linq,Lambda是不行的。SQL代码下方是删除电... 查看详情

c#中datatable带条件的groupby写法怎么写?

DataTable的成员Rows类型是DataRowCollection,它虽然实现了ICollection和IEnumerable接口,能够被枚举和遍历,却没有实现IEnumerable<T>接口,所以无法直接在Rows上使用IEnumerable<T>的扩展方法(Select,Where,OrderBy,GroupBy,Join等)。想在Rows成... 查看详情

C# 使用 LINQ 将 List<string> 的所有元素替换为相同的模式

】C#使用LINQ将List<string>的所有元素替换为相同的模式【英文标题】:C#ReplaceallelementsofList<string>withthesamepatternwithLINQ【发布时间】:2013-05-3018:56:25【问题描述】:我有一个包含数千个字符串的C#列表:"2324343""6572332""45122"...... 查看详情

使用linq查询datatable某列数据

我的DataTable中有一列数量,假设列名叫:num,这个DataTable有多行数据。那么使用Linq语言能够求出设个列的所有合计值吗?如:SUM(num)。参考技术Avarq=(fromcin表名wherec.列名==numselectc.num).Sum();returnConvert.ToInt32(q);追问能解释一下不啊... 查看详情

使用 DataTable 和 Linq 导出到 Excel 中缺少某些数据

】使用DataTable和Linq导出到Excel中缺少某些数据【英文标题】:SomedataismissingintheExporttoExcelusingDataTableandLinq【发布时间】:2016-05-0401:57:22【问题描述】:我在单个XL文件中导出三个工作表,但我在第二个DataTable(EducationDetails表)和... 查看详情

使用 LINQ C# 将两行合并为基于列的单行

】使用LINQC#将两行合并为基于列的单行【英文标题】:MergetworowsintosinglerowbasedonacolumnusingLINQC#【发布时间】:2021-07-1823:26:16【问题描述】:我有一个如下所示的对象列表。我想根据B列将每两行连接成单行。可以肯定,每个单列B... 查看详情

C# LINQ 使用 DISTINCT 计数元素

】C#LINQ使用DISTINCT计数元素【英文标题】:C#LINQcountingelementswithDISTINCT【发布时间】:2013-07-1304:52:23【问题描述】:我有一个KeyValuePair项的集合,其中DateTime为键,字符串为值。基本上我的数据看起来像:12/07/2013-1022012/07/2013-1022012... 查看详情