迭代两个列表并在新列中组合相同的值
本文关键字:组合 新列中 列表 两个 迭代 | 更新日期: 2023-09-27 17:54:46
我有两个来自两个不同数据库的数据列表,它们都共享一个公共列。我想遍历两个列表,如果在ListA中找到公共值,同时遍历ListB,我想在ListA上的同一行添加两个新列。一旦它完成了对每一行的操作,我将只显示主列表的结果,或者将其添加到新列表中,如果这样做更好的话…
//Create a list to store blink details data in from the AMI...
List<getBlinksModel> blinkList = new List<getBlinksModel>();
//Create a list for the as400 data...
List<getBlinksModel> as400GPSList = new List<getBlinksModel>();
//Create a list for all the data...
List<getBlinksModel> blinkDetailsListWithGPS = new List<getBlinksModel>();
这是我的模型…
public class getBlinksModel
{
public string METERNUMBER { get; set; }
public int BLINKS { get; set; }
public string SUBNAME { get; set; }
public string FEEDERNAME { get; set; }
public string ACCTNUM { get; set; }
public string Latitude { get; set; }
public string Longitude { get; set; }
}
您可以使用Linq连接,这将把两个列表连接在一起,并返回METERNUMBER
在两个列表中存在的项目,但使用经纬度形式as400GPSList
:
List<getBlinksModel> blinkDetailsListWithGPS
= (from b in blinkList
join a in as400GPSList
on b.METERNUMBER equals a.METERNUMBER
select new getBlinksModel
{
METERNUMBER = a.METERNUMBER,
BLINKS = a.BLINKS,
ACCTNUM = a.ACCTNUM,
FEEDERNAME = a.FEEDERNAME,
SUBNAME = a.SUBNAME,
Latitude = b.Latitude,
Longitude = b.Longitude
}).ToList();
根据您使用的。net版本,这似乎是适合Enumerable的情况。相交方法:List<getBlinksModel> blinkDetailsListWithGPS = blinkList.Intersect(as400GPSList).ToList();
正如其他人提到的,这取决于你所说的公共值是什么意思。此方法将创建一个列表blinkDetailsListWithGPS
,该列表由在其他两个相同类型的列表blinkList
和as400GPSList
中找到的元素组成。
您可以使用LINQ来获取您需要的信息:
var query = from a in blinklist
join b in as400GPSList on a.METERNUMBER = b.METERNUMBER
select a;
List<getBlinksModel> joinedList = query.ToList();
这个特定的LINQ表达式将返回列表A (blinklist)中存在于列表B (as400GPSList)中的所有项目。如果你想获得一个带有BlinkModels a和BlinkModels B值的新列表,你可以使用@DavidG在这里发布的代码。
如果需要其他信息,可以修改select语句
试试这个:
List<getBlinksModel> blinkDetailsListWithGPS = blinkList.Join
(
as400GPSList,
x => x.METERNUMBER,
y => y.METERNUMBER,
(x, y) => {
x.Latitude = y.Latitude;
x.Longitude = y.Longitude;
return x;
}
).ToList();
请注意,这不会创建新的getBlinksModel
对象,而是使用blinkList
中的对象并初始化Latitude
和Longitude
属性。