1

したがって、基本的には、この現在のリストに手動ではなく配列を設定する必要があります。

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            List<People> people = new List<People>()
            {
                new People{Name="John",Age=21,Email="john@abc.com"}
                new People{Name="Tom",Age=30,Email="tom@abc.com"}
            };
        }
    }

これまでのところ、私はこのようなクラスの人々を持っています:

    class People
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Email { get; set; }
    }

代わりに、クラス People からクラス MainWindow への配列を使用したいと思います。何かのようなもの:

    class People
    {
        public string[] Name =
        {
            "John",
            "Tom",
        };
        public int[] Age =
        {
            "21",
            "30",
        }
        ...
    }

これらの配列を使用してこのリストを作成する方法がわかりません。よろしくお願いいたします。

4

3 に答える 3

2
int c = people.Name.Count;

Enumerable.Range(0,c).Select(i => new People(){Name = people.Name[i], Age = people.Age[i], ...});

すべての配列が同じサイズであることを確認する必要があります。

また、「データ」を静的に設定した方がよいでしょう。

int c = Math.Min(people.Name.Count, people.Age.Count, ...);より良い「対称性」のためにできること

于 2013-01-24T16:30:59.347 に答える
0

これがコレクションに事前入力されている場合、これを行う方法はたくさんあります

public static class PeopleListFactory
{
   public static IEnumerable<People> Content(int someindicator)
   {
      List<People> result = new List<People>();
      switch (someIndicator)
      {      
        case 0: // fill it in here with and from whatever you like.
        break;
      }
      return result;
   }
}

それからあなたのメインフォームではそれはただです

リストの人々=新しいリスト(PeopleListFactory.Content(0));

于 2013-01-24T16:37:36.230 に答える
0

Selectオーバーロードの 1 つはindexパラメータとして持っています

var names = new[]{ "John", "Tom" };
var ages  = new[]{ 21, 30, };
var mails = new[]{ "mail1", "mail2", };

names.Select((name, index) => 
       new People{
       Name = name, 
       Age = ages[index], 
       Email = mails[index]})
     .Dump();

プリント:

Name Age Email 
John 21  mail1 
Tom  30  mail2 
于 2013-01-24T16:27:41.720 に答える