需要LinqToXml分组的帮助吗
我有一个XML文件,我正试图按属性“Width”对其进行分组。以下是一个片段:需要LinqToXml分组的帮助吗,linq,linq-to-xml,Linq,Linq To Xml,我有一个XML文件,我正试图按属性“Width”对其进行分组。以下是一个片段: <nodes> <FieldType Name="1000" OriginalName="1000" ScriptName="" SqlType="12" Width="1000" EnableValues="0" Scale="0" ForceMatch="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" /> <FieldTy
<nodes>
<FieldType Name="1000" OriginalName="1000" ScriptName="" SqlType="12" Width="1000" EnableValues="0" Scale="0" ForceMatch="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" />
<FieldType Name="Varchar 1000" OriginalName="Varchar1000" ScriptName="" SqlType="12" Width="1000" EnableValues="0" Scale="0" ForceMatch="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" />
<FieldType Name="Varchar 10001" OriginalName="Varchar1000" ScriptName="" SqlType="12" Width="1000" EnableValues="0" Scale="0" ForceMatch="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" />
<FieldType Name="2000" OriginalName="1000" ScriptName="" SqlType="12" Width="200" EnableValues="0" Scale="0" ForceMatch="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" />
<FieldType Name="Varchar 200" OriginalName="Varchar1000" ScriptName="" SqlType="12" Width="200" EnableValues="0" Scale="0" ForceMatch="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" />
<FieldType Name="Varchar 2001" OriginalName="Varchar1000" ScriptName="" SqlType="12" Width="200" EnableValues="0" Scale="0" ForceMatch="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" />
<FieldType Name="Y/N" ScriptName="" SqlType="12" Width="1" EnableValues="1" ForceMatch="1" Scale="0" ForceMatchCaseSensitive="0" SortAlphabetically="0" />
但它仍然返回:1000,1000,1000,200,200
知道我的语法有什么问题吗?试试这个:
XDocument xmlDoc = XDocument.Load(@"c:\temp\sample.xml");
var q =
from c in xmlDoc.Descendants("FieldType")
group c by c.Attribute("Width").Value into cust_widths
select cust_widths.Key;
foreach (var name in q)
{
System.Diagnostics.Debug.WriteLine(name);
}
您的代码有几个问题:
FieldType
元素XAttribute
对象分组,而不是按属性值分组var q = xmlDoc
.Descendants("FieldType")
.Select(c => c.Attribute("Width").Value)
.Distinct();
试试这个:
XDocument xmlDoc = XDocument.Load(@"c:\temp\sample.xml");
var q =
from c in xmlDoc.Descendants("FieldType")
group c by c.Attribute("Width").Value into cust_widths
select cust_widths.Key;
foreach (var name in q)
{
System.Diagnostics.Debug.WriteLine(name);
}
您的代码有几个问题:
FieldType
元素XAttribute
对象分组,而不是按属性值分组var q = xmlDoc
.Descendants("FieldType")
.Select(c => c.Attribute("Width").Value)
.Distinct();
由于您是通过
Attribute()
操作符返回的XAttribute
对象进行分组的,因此每个元素都有唯一的组键。您需要使用返回属性的Value
属性来按属性值分组。因为您是按attribute()
操作符返回的XAttribute
对象分组的,所以每个元素都有唯一的组键。您需要使用返回属性的值
属性按属性值分组。伙计,我差一点就成功了!我想增值让每一行都独一无二。谢谢,我更喜欢你更简单的版本,一定很喜欢林克。老兄,我很接近!我想增值让每一行都独一无二。谢谢,我更喜欢你简单的版本,一定要爱linq。