我在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中创建新应用程序记录的行 循环然后让它顺序通过并插入三个应用程序而不是我 逐个编码。
答案 0 :(得分:6)
您可以使用LINQ:
var names = new[] {"A", "B", "C"};
var apps = names.Select(x => new Application { Name = x });
applications.AddRange(apps);
答案 1 :(得分:3)
如果我正确理解了问题,那么您的seedData()
方法可能如下所示:
public void seedData()
{
const string[] names = new string[] { "xx", "bb", "xx" };
foreach (string name in names)
applications.Add(new Application { Name = name });
}
答案 2 :(得分:2)
您可以使用object or collection initializers
List<Application> applications = new List<Application>()
{
new Application(){Name="aa"},
new Application(){Name="bb"},
new Application(){Name="xx"}
};
无需将应用程序名称存储在单独的数组中,并在其上循环以进行初始化 我认为结果代码也更清晰。
答案 3 :(得分:1)
如果您想使用for
循环,可以使用以下方法:
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);
}
答案 4 :(得分:1)
您可以使用:
public static IList<Application> CreatesApp(IEnumerable<string> names)
{
return names == null ? new List<Application>() :
names.Select(name => new Application() { Name = name }).ToList();
}
答案 5 :(得分:0)
使用线程。和.join
离 创建一个创建线程并返回其引用的函数 即:createAppThread(应用程序应用程序)
所以 你的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线程一段时间,但它会起作用。