Подтвердить что ты не робот

Присваивать значение с помощью 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)

как его назначить.?

4b9b3361

Ответ 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"
                }