我有一个查询,如果它返回一个单行,工作正常.但是,如果有多行,它将:
>创建正确的行数
>错误地将每一行分配给最后一行的值…在这种情况下,它将返回x3行,因为这是满足查询的最终节点.
我原以为它会返回x3 disTINCT行.
任何人都可以建议为什么最终的xml节点会覆盖不同的值?
谢谢
<?xml version="1.0" encoding="utf-8" ?> <Music> <customer id="89"> <name value="Sample Name 2" /> <age value="31" /> <location> <city value="Wichita" /> <state value="KS" /> <country value="USA" /> </location> </customer> <customer id="80"> <name value="Sample Name 3" /> <age value="41" /> <location> <city value="Seattle" /> <state value="WA" /> <country value="USA" /> </location> </customer> <customer id="84"> <name value="Sample Name" /> <age value="29" /> <location> <city value="Los Angeles" /> <state value="CA" /> <country value="USA" /> </location> </customer> <customer id="100"> <name value="Rock UK" /> <age value="25" /> <location> <city value="Los Angeles" /> <state value="CA" /> <country value="USA" /> </location> </customer> </Music>
代码如下:
private List<Music> currentMusic { get; set; } private IEnumerable<Music> GetCustomer(string id) { XElement main = XElement.Load(@"D:\work\web\App_Data\Customers.xml"); IEnumerable<XElement> searched = from c in main.Elements("customer") where (string)c.Attribute("id") != "100" select c; Music music = new Music(); currentMusic = new List<Music>(); foreach (XElement customer in searched) { music.Country = customer.Element("name").Attribute("value").Value; music.Name = customer.Element("age").Attribute("value").Value; currentMusic.Add(music); } return currentMusic; }
解决方法
移动音乐音乐=新音乐();在你的foreach循环中.
目前,您正在创建单个音乐实例并将其多次添加到列表中.每次更新时,列表中的每个项目都会受到影响,因为它们都是相同的项目.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。