2

C#には次のクラスがあります。

public partial class Application
{
    public Application()
    {
        this.TestAccounts = new List<TestAccount>();
    }

    public int ApplicationId { get; set; }
    public string Name { get; set; }
    public byte[] RowVersion { get; set; }
    public System.DateTime ModifiedDate { get; set; }
    public virtual ICollection<TestAccount> TestAccounts { get; set; }
}

次のようなものを使用して、アプリケーション名が「aa」、「bb」、「xx」のレコードをいくつか挿入したいと思います。

List<Application> applications;

public void seedData() {
    var a = new Application { Name = "xx" };
    applications.Add(a);
}

新しいアプリケーションレコードを作成する行をforループで囲み、3つのアプリケーションを1つずつコーディングするのではなく、シーケンスして挿入する方法はありますか?

4

6 に答える 6

6

これにはLINQを使用できます。

var names = new[] {"A", "B", "C"};
var apps = names.Select(x => new Application { Name = x });
applications.AddRange(apps);
于 2013-03-24T16:33:11.980 に答える
3

質問を正しく理解していれば、seedData()メソッドは次のようになります。

public void seedData()
{
    const string[] names = new string[] { "xx", "bb", "xx" };
    foreach (string name in names)
        applications.Add(new Application { Name = name });
}
于 2013-03-24T16:35:31.313 に答える
2

オブジェクトまたはコレクションの初期化子を使用できます

List<Application> applications = new List<Application>()
{ 
  new Application(){Name="aa"}, 
  new Application(){Name="bb"}, 
  new Application(){Name="xx"}
};

アプリ名を別の配列に保存し、ループして初期化する必要はありません。
また、結果のコードはより明確になると思います。

于 2013-03-24T16:36:10.353 に答える
1

ループを使用したい場合はfor、これを行う1つの方法があります。

var names = new List<string>(new string[] { "aa", "bb", "xx" });

for(int i = 0; i < 3; i++)
{
    var a = new Application { Name = names[i] };
    applications.Add(a);
}
于 2013-03-24T16:35:33.907 に答える
1

次を使用できます。

    public static IList<Application> CreatesApp(IEnumerable<string> names)
    {
      return names == null ? new List<Application>() : 
             names.Select(name => new Application() { Name = name }).ToList();
    }
于 2013-03-24T16:38:18.200 に答える
0

スレッドを使用します。および.join

exスレッドを作成し、その参照を返す関数を作成します。例:createAppThread(Application app)

したがって、forループは

//code from Cuong Le's answer
names = new[] {"A", "B", "C"};
for (int i=0;i<names.length();i++){
  Application app=new Application { Name = "xx" };//create your app object
  Thread th = createAppThread(app);
  Thread.join(th);

}

このメソッドは、しばらくの間UIスレッドをブロックする可能性がありますが、機能します。

于 2013-03-24T16:54:31.003 に答える