Zig*_*ler 0 c# linq merge lambda list
我看到下面的帖子对我来说真的很难理解.所以我重新发布它.对不起,如果有人认为它是重复的.我只有简单的要求
我有这样的课
public class Person
{
public int Id{get;set;}
public string Name{get;set;}
public string MailingAddress{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我有一个像下面这样的方法
public IList<Person> GetNames(IList<int> ids)
Run Code Online (Sandbox Code Playgroud)
这将给我下面的人员名单
1"Sam"""
2"开发"""
4"哈希"
我有另一种方法如下
public IList<Person> GetMailingAddress(IList<int> ids)
Run Code Online (Sandbox Code Playgroud)
这将给我下面的人员名单
1"""ABC"
6"""TTT"
2"""XYZ"
现在我需要合并两个方法的结果,以便我可以得到这样的最终结果
1"Sam""ABC"
2"Dev""XYZ"
更新:对不起,我没有明确提供我的测试数据.请参阅上面的测试数据
我对你的方法返回的内容感到有些困惑,如果你需要将两个结果组合起来得到完整的Person对象,那么有两种方法可以使你的方法正常工作.
如果您可以依赖于以相同顺序返回的相同数量的对象,则可以尝试:
names.Zip(mailingAddresses, (n, m) => new Person
{
Id = n.Id,
Name = n.Name,
MailingAddress = m.MailingAddress
});
Run Code Online (Sandbox Code Playgroud)如果你不能依赖这两个条件,你可以使用Join:
names.Join(mailingAddresses, n => n.Id, m => m.Id, (n, m) => new Person
{
Id = n.Id,
Name = n.Name,
MailingAddress = m.MailingAddress
});
Run Code Online (Sandbox Code Playgroud)即使您有这两个选项,如果您可以控制实际从数据源获取对象的代码,那么还有第三个更好的选择.如果你知道你需要这两个数据块,你应该创建一个查询数据源的单一时间让所有的数据,而不是每件数据的查询,一旦一个方法.