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

如何使用C# Lambda在Entity Framework中实现Join查询并更新List类memo字段

现有代码问题

你写的Join方法参数存在错误:关联右侧members表的键选择器错误写成了member => member,应该指定为member => member.cid才能和左侧List类的cid字段匹配。同时你直接返回了list对象,没有获取关联的member的name字段,无法完成memo的更新。

实现方案

你的需求完全可以通过Lambda实现,你本地List实例只有50个,数据量很小,推荐两种实现方式:

方案1(推荐,性能更优)

先从数据库捞出匹配的cid和name映射关系,再遍历本地集合更新,仅触发一次简单的数据库查询:

// 筛选本地符合条件的cid集合
var validCids = thelist.Where(w => !string.IsNullOrWhiteSpace(w.type)).Select(x => x.cid).ToList();
// 从数据库捞出对应cid的name,转成字典
var memberNameMap = db.members
    .Where(m => validCids.Contains(m.cid))
    .ToDictionary(m => m.cid, m => m.name);
// 遍历更新memo字段
foreach(var item in thelist.Where(w => !string.IsNullOrWhiteSpace(w.type) && memberNameMap.ContainsKey(w.cid)))
{
    item.memo = memberNameMap[item.cid];
}

方案2(使用Join实现)

修正你原有的Join写法,关联后同时拿到List实例和对应member的name:

var joinResult = thelist.Where(w => !string.IsNullOrWhiteSpace(w.type))
    .Join(
        db.members,
        list => list.cid,
        member => member.cid, // 指定members表的关联键
        (list, member) => new { ListObj = list, MemberName = member.name }
    )
    .ToList();
// 遍历更新
foreach(var item in joinResult)
{
    item.ListObj.memo = item.MemberName;
}
// 如需最终结果集合可直接用 joinResult.Select(x => x.ListObj).ToList()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:18:03