1

我再次发布我的问题,因为我无法在其中添加我的答案所以这里是代码

static void Main(string[] args)
{
    string fileA= "B.txt";
    IList listA= new ArrayList();

    FileReader(fileA, ref listA);

    for (int i = 0; i < listA.Count; i++)
    {
        Console.WriteLine(listA[i].ToString());
    }

    Console.ReadKey();
}

public static void FileReader(string filename, ref IList result)
{
    using (StreamReader sr = new StreamReader(filename))
    {
        string firstName;
        string SecondName;

        while (!sr.EndOfStream)
        {
            firstName= sr.EndOfStream ? string.Empty : sr.ReadLine();
            SecondName= sr.EndOfStream ? string.Empty : sr.ReadLine();

            result.Add(new Person(firstName, SecondName));
        }
    }
}

我的列表中的值是 [0] ={"firstname","lastname"} [1]={"firsname2","secondname2"}

这些值附加在 Person 类中,所以如果我想更改索引 [1] 的姓氏值,那么该怎么做呢?我可以获得索引 [1] 值,但如何访问链接到该索引的 Person 变量

4

1 回答 1

0

您使用的ArrayList不是合适的数据结构,因为它会丢弃类型信息(除非您坚持使用 .NET 1.1)。

尝试使用List(T).

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

static void Main(string[] args)
{
    var file = "B.txt";
    var list = new List<Person>();

    ReadFile(file, list);

    list[1].LastName = "newValue";
}

private static void ReadFile(string file, List<Person> personList)
{
    var items = File.ReadLines(file)
                    // Take each value and tag it with its index
                    .Select((s, i) => new { Value = s, Index = i })
                    // Put the values into groups of 2
                    .GroupBy(item => item.Index / 2, item => item.Value)
                    // Take those groups and make a person
                    .Select(g => new Person { FirstName =  g.FirstOrDefault(), LastName = g.Skip(1).FirstOrDefault() });

    personList.AddRange(items);
}
于 2013-09-03T17:49:59.290 回答