C# 如何在没有循环的情况下从list2更新静态list1如何通过LINQ lambda表达式实现这一点
如何在没有循环的情况下从列表2更新静态列表1 如何通过LINQ lambda表达式实现这一点C# 如何在没有循环的情况下从list2更新静态list1如何通过LINQ lambda表达式实现这一点,c#,linq,C#,Linq,如何在没有循环的情况下从列表2更新静态列表1 如何通过LINQ lambda表达式实现这一点 public class State { public int SID { get; set; } public string Name { get; set; } public string SCode { get; set; } public string SAbbrevation { get; set; }
public class State
{
public int SID { get; set; }
public string Name { get; set; }
public string SCode { get; set; }
public string SAbbrevation { get; set; }
}
public class Country
{
public int CID { get; set; }
public string Name { get; set; }
public string CAbbrevation { get; set; }
}
static List<Country> _staticlist { get; set; } = new List<Country>();
List<Country> coutries = new List<Country>()
{
new Country{CID=1,Name="",CAbbrevation="IND"},
new Country{CID=2,Name="",CAbbrevation="USA"},
};
_staticlist.AddRange(coutries);
List<State> states = new List<State>()
{
new State{ SID=1,Name="Telangana",SCode="+91",SAbbrevation="TG"},
new State{ SID=2,Name="Texas",SCode="512",SAbbrevation="TS"},
};
但是静态列表不会更新,因为您没有将操作结果分配给变量
var myList = _staticlist.Join(states, a => a.CID, b => b.SID,
(a, b) => new { a, b })
.Select(S =>
{
S.a.Name = S.b.Name;
return S;
}).ToList();
请注意,Join
是Enumerable的扩展函数,其中Enumerable无法修改
public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
this IEnumerable<TOuter> outer,
IEnumerable<TInner> inner,
Func<TOuter, TKey> outerKeySelector,
Func<TInner, TKey> innerKeySelector,
Func<TOuter, TInner, TResult> resultSelector)
公共静态IEnumerable联接(
这是数不清的外部,
我可数的内心世界,
Func outerKeySelector,
Func innerKeySelector,
Func结果选择器)
LINQ语句从不修改正在使用它们的集合,而是为正在使用的每个LINQ语句返回一个新集合。在您的情况下,您可以将LINQ语句返回的集合直接分配给\u staticList
,如下所示:
_staticlist = _staticlist.Join(states, a => a.CID, b => b.SID,
(a, b) => new { a, b })
.Select(S =>
{
S.a.Name = S.b.Name;
return S.a;
}).ToList();
使用
Select()
语句时,请注意选择的对象类型。因为这必须与\u staticList
的类型匹配\u staticList=\u staticList.Join(states,a=>a.CID,b=>b.SID,…)
?无法隐式转换type system.collections泛型列表匿名类型您必须在Select()
中返回国家/地区列表,如下所示:返回S.a代码>是否有更新静态列表的方法。使用LINQ lambda表达式。谢谢您,先生。但是我怎样才能更新静态列表呢。有没有办法更新静态列表。使用LINQ lambda表达式。谢谢您,先生。不会更新_staticlist。有一个错误。无法隐式转换类型system.collections泛型列表匿名type@formehasan请注意Select()
中的return语句,它是return s.a代码>您需要在代码中对此进行调整。
_staticlist = _staticlist.Join(states, a => a.CID, b => b.SID,
(a, b) => new { a, b })
.Select(S =>
{
S.a.Name = S.b.Name;
return S.a;
}).ToList();