所以我使用linq跟随两个列表。
List<One> one= A.Common
.Join(B.Common,
a => a.ID,
b=> b.ID,
(a, b) => new One
{
ID = b.PID,
Name = b.PCName,
LastName = a.LName
}).ToList();
List<One> two = (from c in D.Options
select new One
{
MainName = c.mName
}).ToList();
List<One> sn = one.Concat(two).ToList();
我正在整理这两个清单。但是当我调试时,我在sn list
中将MainName称为null。
如何从单个列表中的两个列表中获取数据?
答案 0 :(得分:3)
您就是这样做的:
var sn = one.Zip(two, (x, y) => new One{
ID = x.ID,
Name = x.Name,
LastName = x.LastName,
MainName = y.MainName
});
答案 1 :(得分:0)
您希望为列表ONE 中的所有列表值分配MainName属性吗?
从上面开始,代码连接将连接两个列表,并且不会为列表一个元素设置MainName。
<?php
$hashedpassword = crypt("james");
/*echo $hashedpassword;
*/
if (password_verify('james', $hashedpassword)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>
上面的行只会将两个列表连接到一个列表元素。
答案 2 :(得分:0)
var mergedList = YourFirstList.Concat(YourSecondList)
.Concat(YourThirdList)
.ToList();
编辑:
one.Concat(two).Select(g => g.Aggregate((p1,p2) => new One
{
ID = p1.ID,
Name = p1.PCName,
LastName = p1.LName,
MainName = p2.mName
}));
更有效的方法 - 上面将基本循环遍历所有条目,创建一个动态大小的缓冲区。
var mergedList = new List<One>(YourFirstList.Count +
YourSecondList.Count +
YourThirdList.Count);
mergedList.AddRange(YourFirstList);
mergedList.AddRange(YourSecondList);
mergedList.AddRange(YourThirdList);
special-cased
的{{1}}用于提高效率。
您可以使用ICollection<T>
方法。
Zip