Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
C# 使用LINQ将CSV转换为XML_C#_Asp.net_Xml_Linq - Fatal编程技术网

C# 使用LINQ将CSV转换为XML

C# 使用LINQ将CSV转换为XML,c#,asp.net,xml,linq,C#,Asp.net,Xml,Linq,任务是将CSV文件转换为XML var x = from line in File.ReadAllLines(@"d:\sample.txt") where !line.StartsWith("#") && line.Length>0 let parts=line.Split(',') select new { XmlFile= new XElement("root",

任务是将CSV文件转换为XML

var x = from line in File.ReadAllLines(@"d:\sample.txt")
        where !line.StartsWith("#") && line.Length>0
        let parts=line.Split(',')
       select new
       {
         XmlFile= new XElement("root",
                                new XElement("ISBN",parts[0]),
                                new XElement("Title",parts[1])
                               )

       };
问题

1)如何处理流(使用LINQ语句)

2) 如何将所选内容保存到“sample.xml”文件中

3) 如何将Xml文件绑定到GridView?(是否需要使用XmlDataSource?)

4) 使用Linq是否可以为我的XML创建XSD?(不使用XSD.exe)。

1)执行文件.Close,因此不应出现流问题

2) 您需要将Linq查询放入您的XElement声明中,这样您就可以从中得到一个XElement,而不是一个IEnumerable的XElement(见下文)

3&4其他人可以回答……;)

(警告,以下代码未经测试):

1) 我认为您不需要显式地处理流。您检测到泄漏了吗?
2) 与使用XMLFile属性创建对象(anon类型)不同,整理XML元素列表

...
select new XElement("root",
                                new XElement("ISBN",parts[0]),
                                new XElement("Title",parts[1])
                               )
现在,您可以通过编程创建XmlDocument或父XElement,将列表添加为子元素,并使用上述XML类上的成员函数将其保存到文件中

3) 数据绑定:查找。
4) XSD也是XML。因此,没有理由不能以编程方式生成它。。虽然我从未试过。除非您正在考虑从步骤2中创建的xml文件自动生成模式。。在这种情况下,我不知道答案。。不确定是否有任何工具可以从规范的有效实现生成正确的格式规范

...
select new XElement("root",
                                new XElement("ISBN",parts[0]),
                                new XElement("Title",parts[1])
                               )