我怎样才能把它简化成一行
How can i simplify this into one line
portalSelectslist.FirstOrDefault(x => x.PortalId == item.PortalId).AccessTypePortalId = item.AccesstypePortalId;
portalSelectslist.FirstOrDefault(x => x.PortalId == item.PortalId).Isselected = true;
更新列表中的项目我更新每行中的每个 属性 而不是我如何更新一行中的两个项目
使用临时变量。所以你不必查询列表两次,它更容易阅读。
var temp = portalSelectslist.FirstOrDefault(x => x.PortalId == item.PortalId);
if(temp != null)
{
temp.AccessTypePortalId = item.AccesstypePortalId;
temp.Isselected = true;
}
你不能或可能不应该。仅仅因为它在一行中,并不能使它成为更好的代码。
下面更readable/maintainable.
var portal = portalSelectslist
.FirstOrDefault(x => x.PortalId == item.PortalId);
if (portal != null) {
portal.AccessTypePortalId = item.AccesstypePortalId;
portal.Isselected = true;
}
更新
从技术上讲,您可以在一条“行”中执行此操作,但不要这样做。此代码不易阅读或理解,因此更难维护。
portalSelectslist.Where(x => x.PortalId == item.PortalId).ToList().ForEach(s => { s.AccessTypePortalId = item.AccesstypePortalId; s.Isselected = true });
仅仅因为你可以,并不意味着你应该。
代码看起来正在更新与 where 子句匹配的 all 值。这不是您要传达给正在阅读代码的任何人的意图,您只想更新一个值。
编写代码(使其运行后)首先要担心的是可读性和可维护性。
portalSelectslist.FirstOrDefault(x => x.PortalId == item.PortalId).AccessTypePortalId = item.AccesstypePortalId;
portalSelectslist.FirstOrDefault(x => x.PortalId == item.PortalId).Isselected = true;
更新列表中的项目我更新每行中的每个 属性 而不是我如何更新一行中的两个项目
使用临时变量。所以你不必查询列表两次,它更容易阅读。
var temp = portalSelectslist.FirstOrDefault(x => x.PortalId == item.PortalId);
if(temp != null)
{
temp.AccessTypePortalId = item.AccesstypePortalId;
temp.Isselected = true;
}
你不能或可能不应该。仅仅因为它在一行中,并不能使它成为更好的代码。
下面更readable/maintainable.
var portal = portalSelectslist
.FirstOrDefault(x => x.PortalId == item.PortalId);
if (portal != null) {
portal.AccessTypePortalId = item.AccesstypePortalId;
portal.Isselected = true;
}
更新 从技术上讲,您可以在一条“行”中执行此操作,但不要这样做。此代码不易阅读或理解,因此更难维护。
portalSelectslist.Where(x => x.PortalId == item.PortalId).ToList().ForEach(s => { s.AccessTypePortalId = item.AccesstypePortalId; s.Isselected = true });
仅仅因为你可以,并不意味着你应该。
代码看起来正在更新与 where 子句匹配的 all 值。这不是您要传达给正在阅读代码的任何人的意图,您只想更新一个值。
编写代码(使其运行后)首先要担心的是可读性和可维护性。