我看到类似下面的帖子,这对我来说很难理解。所以我重新发布它。对不起,如果有人觉得它是重复的。我只是简单的要求将合并列表合并为一个
C# Joins/Where with Linq and Lambda
我有这样
public class Person
{
public int Id{get;set;}
public string Name{get;set;}
public string MailingAddress{get;set;}
}
一类我有这样的方法如下
public IList<Person> GetNames(IList<int> ids)
这会给我列举的人员像下面
1“Sam”“”
2 “开发” “”
4 “Hummy”
我喜欢另一种方法如下
public IList<Person> GetMailingAddress(IList<int> ids)
这会给我列举的人员像下面
1 “” “ABC”
6“”“TTT”
2“”“XYZ”
现在我需要合并的两种方法的结果,这样我可以有我这样的
1“山姆”,“ABC”
2“开发”最终结果“ XYZ“
更新:对不起,我没有明确给出我的测试数据。请参阅上面我的测试数据
如果您有两个相关长度相同的列表以及要合并到单个列表中的相关索引,那么您要查找的操作是['Zip'](http://msdn.microsoft.com/zh-cn/ -us /库/ dd267698(v = vs.110)的.aspx)。对于更复杂的“关联”,您应该使用['Join'](http://msdn.microsoft.com/zh-cn/library/bb534675(v = vs.110).aspx),您可以在其中定义构成一场比赛。这些都不是合并,因为它们不会修改最初的集合,它们是*投射到新的集合中。 –
不幸的是,从你的问题来看,你没有完全清楚你想要做什么。为什么你有两种不同的方法根据ID值返回'Person'对象?你正在处理两个不同的基础数据表或什么?创建一种在单个操作中填充所有类字段的方法会更实际吗?是否有可能你会传递不同的'ids'列表到每个方法?只要在这两种情况下总是以相同顺序返回完全相同的ID的对象,'Zip'方法可以提供帮助。 –
@Preston - 我无法使用Zip,因为我的两个列表长度不一样。我用join来解决我的问题。请看下面 – Ziggler