Присваивать значение с помощью linq
public class Company
{
public int id { get; set; }
public int Name { get; set; }
}
List<Company> listofCompany = new List<Company>();
это моя коллекция списка компаний. Я хочу присвоить значения свойству Name с помощью LINQ
listofCompany.Where(d => d.Id = 1);
(Я хочу определить свойство имени идентификатора компании 1)
как его назначить.?
Ответы
Ответ 1
используя Linq:
listOfCompany.Where(c=> c.id == 1).FirstOrDefault().Name = "Whatever Name";
UPDATE
Это можно упростить, чтобы...
listOfCompany.FirstOrDefault(c = > c.id == 1).Name = "Независимо от имени";
UPDATE
Для нескольких элементов (условие выполняется несколькими элементами):
listOfCompany.Where(c=> c.id == 1).ToList().ForEach(cc => cc.Name = "Whatever Name");
Ответ 2
Вы можете создать метод расширения:
public static IEnumerable<T> Do<T>(this IEnumerable<T> self, Action<T> action) {
foreach(var item in self) {
action(item);
yield return item;
}
}
И затем используйте его в коде:
listofCompany.Do(d=>d.Id = 1);
listofCompany.Where(d=>d.Name.Contains("Inc")).Do(d=>d.Id = 1);
Ответ 3
Помните, что он обновляет только первую компанию, найденную с идентификатором компании 1. Для нескольких
(from c in listOfCompany where c.id == 1 select c).First().Name = "Whatever Name";
Для нескольких обновлений
from c in listOfCompany where c.id == 1 select c => {c.Name = "Whatever Name"; return c;}
Ответ 4
Это можно сделать так же
foreach (Company company in listofCompany.Where(d => d.Id = 1)).ToList())
{
//do your stuff here
company.Id= 2;
company.Name= "Sample"
}