所以这里有一些代码,可以正常工作。但是我想将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", }, new People{Id = 2, Name = "andy2", }, new People{Id = 3, Name = "andy3", }, new People{Id = 4, Name = "andy4", }, };
var someOfThem = new List<People>{new People{Id = 1, Name = null, }, new People{Id = 2, Name = null, }};
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}", item.Id, item.Name);
}
}
public class People
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
}
这是结果。
1=andy1
2=andy2
我只是想知道还有另一种方法可以达到相同的结果,但是更优雅?还是更简单的方法?
var test = someOfThem.Select(c =>
{
c.Name = all.Find(a => a.Id == c.Id).Name;
return c;
});
您可以使用C#的LINQ和与其关联的join
关键字:
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", }, new People { Id = 2, Name = "andy2", }, new People { Id = 3, Name = "andy3", }, new People { Id = 4, Name = "andy4", }, };
var someOfThem = new List<People> { new People { Id = 1, Name = null, }, new People { Id = 2, Name = null, } };
var test = from item in someOfThem
join element in all on item.Id equals element.Id
select element;
foreach (var item in test)
Console.WriteLine("{0}={1}", item.Id, item.Name);
}
}
public class People
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
}