我的Linq查询是.
string spouseName="jenny";
var empData = from sData in EmpList
from member in sData.familyNames
where string.Compare(member, spouseName, true) == 0
select new Employee
{
CompanyDept = sData.company,
EmpName = sData.empName,
FamilyNames.Add(spouse) //ERROR HERE Not able to access as list
};
Run Code Online (Sandbox Code Playgroud)
这里empList是 List<Employee>
class Employee
{
private string companyDept
private string empName
private List<string> _familyNames = new List<string>();
public string CompanyDept
{
get { return companyDept}
set { companyDept= value; }
}
public string EmpName
{
get { return empName}
set { empName= value; }
}
public List<string> FamilyNames
{
get { return _familyNames }
set { _familyNames = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
题:
在这里,我试图获得类型的linq输出Employee...但列表familyNames只包含一个项目配偶名称,而不是所有家庭成员的列表.
但我在familyList收到错误.无法将项目添加到familyNames列表以无法分配.
需要帮助,为什么错误来了或我错了?
正确的翻译是:
select new Employee
{
CompanyDept = sData.company,
EmpName = sData.empName,
FamilyNames = { spouse } // 'nested' collection-initializer
};
Run Code Online (Sandbox Code Playgroud)
原因是你只需要一个Add调用FamilyMember,而不是一个完整的属性重新分配到一个新的列表,这是FamilyNames = new List<string> { spouse }可以做的.
松散地说,这意味着:
var temp = new Employee();
temp.CompanyDept = sData.company;
temp.EmpName = sData.empName;
temp.FamilyNames.Add(spouse);
return temp; // this is selected.
Run Code Online (Sandbox Code Playgroud)