Итак, у меня есть код, который работает нормально. Но я хочу изменить часть select
на что-то другое, я не уверен, что другие методы, которые я могу использовать, будут полезны.
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var all = new List<People>{new People{Id = 1, Name = "andy1", Age = null}, new People{Id = 2, Name = "andy2", Age = null}, new People{Id = 3, Name = "andy3", Age = null}, new People{Id = 4, Name = "andy4", Age = null}, };
var someOfThem = new List<People>{new People{Id = 1, Name = null, Age = 1}, new People{Id = 2, Name = null, Age = 1},new People{Id = 3, Name = null, Age = 1}};
var test = someOfThem.Select(c =>
{
c.Name = all.Find(a => a.Id == c.Id).Name;
return c;
});
foreach (var item in test)
Console.WriteLine("{0}={1}={2}", item.Id, item.Name, item.Age);
}
}
public class People
{
public int Id
{
get;
set;
}
public int? Age
{
get;
set;
}
public string Name
{
get;
set;
}
}
И вот результат.
1=andy1=1
2=andy2=1
3=andy3=1
Мне просто интересно, есть ли другой способ достичь того же результата, но более элегантный? или более простой способ?
var test = someOfThem.Select(c =>
{
c.Name = all.Find(a => a.Id == c.Id).Name;
return c;
});
Обновление Извините, я сначала не показал свою проблему правильно, я обновил свой вопрос. Пожалуйста, взгляните еще раз.