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

如何在C#中合并多个查询返回的列表并传递至视图?

在C#中合并两个列表并传递到视图

这里有几种常用的方法来合并你的两个列表,同时满足你学习列表操作的需求:

方法1:使用AddRange()修改原列表

AddRange()会直接把第二个列表的所有元素添加到第一个列表中,不需要创建新的列表对象:

var list1 = c.ETs.Where(p => p.prop != "yes").ToList();
var list2 = c.ETs.Where(p => p.prop == "yes").ToList();

// 将list2的元素全部追加到list1末尾
list1.AddRange(list2);

// 直接把合并后的list1传给视图
return View(list1);

这种方式的优势是不需要额外内存创建新列表,适合不需要保留原list1和list2的场景。

方法2:使用Concat()生成新列表

Concat()会返回一个包含两个列表所有元素的新序列,原列表不会被修改:

var list1 = c.ETs.Where(p => p.prop != "yes").ToList();
var list2 = c.ETs.Where(p => p.prop == "yes").ToList();

// 合并两个列表并转成List类型
var combinedList = list1.Concat(list2).ToList();

// 传递新的合并列表到视图
return View(combinedList);

如果需要保留原有的list1和list2,这种方法更合适。

方法3:直接合并查询(更高效)

其实你可以跳过先创建两个列表的步骤,直接在查询层面合并条件,减少一次内存分配:

// 直接合并两个查询条件,生成一个完整的查询后再转成列表
var combinedList = c.ETs.Where(p => p.prop != "yes" || p.prop == "yes").ToList();

// 实际这个例子等价于直接取所有ETs(因为prop要么是yes要么不是),如果是不同的查询逻辑,比如:
// var combinedList = c.ETs.Where(p => p.Category == "A" || p.Price > 100).ToList();

return View(combinedList);

在视图中使用合并后的列表

假设你的视图模型是List<ET>,可以直接通过Model遍历展示元素:

@model List<YourProjectNamespace.ET>

@foreach (var item in Model)
{
    <div>
        <span>属性值:@item.prop</span>
        <!-- 展示其他属性 -->
    </div>
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:50:35