C# 如何在没有循环的情况下从list2更新静态list1如何通过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; }

如何在没有循环的情况下从列表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 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();