我试图找出是否可以使用linq更新2个或更多字段。
我发现这个示例显示1个属性已更新,但我不确定它是如何转换的。
listOfCompany.FirstOrDefault().Name = "Whatever Name"; // desc = "Whatever desc"
有什么想法吗?
答案 0 :(得分:2)
只需撤回整个实体而不是单个属性。
var myEntity = listOfCompany.FirstOrDefault();
if(myEntity!=null)
{
myEntity.Name = "Blah";
myEntity.Something = "Blah 2";
}
答案 1 :(得分:1)
当您想要更新对象列表时,您可以执行以下操作:
var company = listOfCompany.FirstOrDefault();
company.Name = "Name";
company.Number = 14377;
company.MyProp = obj;
答案 2 :(得分:1)
var x = listOfCompany.FirstOrDefault();
x.Name = "Whatever Name";
x.Desc = "Whatever Desc";
你当然可以这样做:
listOfCompany.FirstOrDefault().Name = "Whatever Name";
listOfCompany.FirstOrDefault().Desc = "Whatever Desc";
但我认为,充其量看起来很奇怪。
请注意,如果listOfCompany没有任何项目,FirstOrDefault()可能会返回null,因此请注意,假设引用返回FirstOrDefault()的项目是安全的,然后尝试在其上设置属性。
我不知道一次设置这两个属性的方法。
答案 3 :(得分:1)
我会反对它,因为它相当令人困惑。更清楚的是一次只更新一个字段。但这是:
listOfCompany.Select(c => new Company(){Name = "NewName", Number = 666, desc = c.desc}).FirstOrDefault();
答案 4 :(得分:1)
Linq用于查询,而非更新。你的例子相当于
var temp = listOfCompany.FirstOrDefault()
temp.Name = "Whatever Name";
// desc = "Whatever desc"
显然第二行是一个基本的属性集 - 它与Linq没有任何关系。为了更新属性(无论是一个还是多个),您需要引用到项目,您可以使用Linq获取:
var company = listOfCompany.FirstOrDefault()
company.name = "Whatever Name";
company.desc = "Whatever desc";