我有两个来自两个不同数据库的数据列表,这两个数据库共享一个公共列。我想迭代两个列表,如果在迭代ListB时找到ListA中的公共值,我想在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; }
}
答案 0 :(得分:0)
根据您使用的.NET版本,这似乎是Enumerable.Intersect方法的合适情况:
List<getBlinksModel> blinkDetailsListWithGPS = blinkList.Intersect(as400GPSList).ToList();
正如其他人所说,这取决于你的共同价值。此方法将创建一个列表blinkDetailsListWithGPS
,该列表由在另外两个相同类型blinkList
和as400GPSList
的列表中找到的元素组成。
答案 1 :(得分:0)
您可以使用Linq join,这会将2个列表合并在一起,并返回两个列表中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();
答案 2 :(得分:0)
您可以使用LINQ获取所需信息:
var query = from a in blinklist
join b in as400GPSList on a.METERNUMBER = b.METERNUMBER
select a;
List<getBlinksModel> joinedList = query.ToList();
此特定LINQ表达式将返回列表B(as400GPSList)中存在的列表A(闪烁列表)中的所有项目。如果你想获得一个BlinkModels A的新列表,其值为BlinkModels B,你可以使用@DavidG发布的代码here。
如果您需要其他信息,可以更改select语句。
答案 3 :(得分:0)
试试这个:
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
属性。