You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何交换泛型List中每个实例的两个属性,LINQ Select语法如何实现?

实现方案

你可以通过LINQ的Select方法实现属性交换,按是否修改原实例分为两种实现方式:

方式1:无副作用实现(推荐,符合LINQ设计规范)

该方式不会修改原有aList中的实例,会返回全新的、已交换属性的A类实例集合:

var swappedList = aList.Select(a => new A
{
    BInstance1 = a.BInstance2,
    BInstance2 = a.BInstance1
}).ToList();

方式2:修改原实例

如果需要直接修改原集合内的A类实例属性,可以使用带语句块的lambda实现,C# 7及以上版本可直接用元组语法简化交换逻辑:

// 该写法会修改原aList内所有A实例的属性
var resultList = aList.Select(a => 
{
    // 元组语法交换两个属性
    (a.BInstance1, a.BInstance2) = (a.BInstance2, a.BInstance1);
    return a;
}).ToList();

如果使用C# 7以下版本,可通过临时变量实现交换:

var resultList = aList.Select(a => 
{
    B temp = a.BInstance1;
    a.BInstance1 = a.BInstance2;
    a.BInstance2 = temp;
    return a;
}).ToList();

注意:如果你的需求仅为修改原集合属性,不需要生成新集合,其实直接用List<T>的ForEach方法更合适,只是你明确要求使用Select扩展方法才提供上述实现。

内容的提问来源于stack exchange,提问作者AmandaSai98b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:06:03