如何在不搜索第一次出现的情况下引用List <string>对象的位置索引?</string>

时间:2013-05-21 11:56:56

标签: c# linq list indexing

我正在尝试使用Linq创建XML文档,并且需要在每个对象的列表中引用索引。目前我所能找到的只是 IndexOf(s)方法,它只返回第一次出现的s,而不是任何给定的位置。当List包含相同值的多个副本时,这会产生问题。

var commands = listProcedure.Items.Cast<string>().ToList();

var xdoc = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XElement("commands",
                commands.Select(s => new XElement("command", s, new XAttribute("id", commands.IndexOf(s)))
                )));

2 个答案:

答案 0 :(得分:2)

试试这个

var commands = listProcedure.Items.Cast<string>().ToList();

var xdoc = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XElement("commands",
                commands.Select( (s, idx) => 
                    new XElement("command", s, new XAttribute("id", idx))
                )));

答案 1 :(得分:0)

对于LINQ,看一下SELECTMANY - 抱歉对细节不能提供更多帮助,但希望指向正确的方向。