使用linq为新列表赋值

问题描述 投票:3回答:5

假设我有一个名为Company的课程

public class Company 
{
   public string name;
   public string id;
}

我有一个名为CompanyList的列表

var companyList = new List<Company>();

我想将name =“Company A”,id =“001”分配给这个空的companyList变量。

我该怎么办?

 companyList.FirstOrDefault().Name = "Company A";
 companyList.FirstOrDefault().Id = "001";
c# linq
5个回答
5
投票

在为集合中的公司分配值之前,必须将公司添加到集合中。您正在设置该公司的值,而不是集合本身的值。

使用:

var companyList = new List<Company>();
companyList.Add(new Company { Name = "Company A", Id = "001" });

要么:

var companyList = new List<Company>();
companyList.Add(new Company());
// Assumes you want to modify the first company in the list
companyList[0].Name = "Company A";
companyList[0].Id = "001";

5
投票

这是一个可以直接初始化集合的示例:

var companyList = new List<Company> {
    new Company { name = "Company A", id = "001" },
    new Company { name = "Company B", id = "002" }
};

4
投票

您可以使用集合初始值设定项:

var companyList = new List<Company>{ new Company { Name = "Company A", Id = "001" } };

实际上和下面一样,有点紧凑

var companyList = new List<Company>();
companyList.Add(new Company { Name = "Company A", Id = "001" });

3
投票

您似乎只需要创建Company的实例,然后将其添加到列表中。这是一个例子:

List<Company> companyList = new List<Company>();
Company currentCompany = new Company(){id="001", Name="Company A"};
companyList.Add(currentCompany);

附注**请注意使用问题中指明的代码段

 companyList.FirstOrDefault().Name = "Company A";
 companyList.FirstOrDefault().Id = "001";

这可能会导致未被捕获的空引用异常,从而导致程序崩溃。使用FirstOrDefault()实例化对象时,请务必检查null。

Company temp = companyList.FirstOrDefault();
if(temp !=null)
{
    temp.Name = "Company A";
    temp.id = "001"; 
}

0
投票

要安全地更新列表(毫无例外),您应该执行以下操作:

 var company =  companyList.FirstOrDefault() ; 
    if (company != null) {
    company.Name ="aaa";
    company.Id = "123" ;
     }
© www.soinside.com 2019 - 2024. All rights reserved.