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

C# 基于Linq查询匹配双字段并返回一维匹配结果列表的实现问题

方案1:单条记录仅返回1个匹配值(优先匹配oldNumber)

如果单条记录同时匹配两个字段时,只需要返回oldNumber,直接在Select中做条件判断即可,得到的直接是一维数组:

// 注意异步方法ToArrayAsync需要搭配await调用
var resultNumbers = await context.Numbers
    .Where(n => requestNumbers.Contains(n.oldNumber) || requestNumbers.Contains(n.newNumber))
    .Select(n => requestNumbers.Contains(n.oldNumber) ? n.oldNumber : n.newNumber)
    .ToArrayAsync();

方案2:单条记录可返回多个匹配值

如果某条记录的oldNumber和newNumber都在requestNumbers中,需要两个值都返回,使用SelectMany展平集合即可:

var resultNumbers = await context.Numbers
    .Where(n => requestNumbers.Contains(n.oldNumber) || requestNumbers.Contains(n.newNumber))
    .SelectMany(n => new[] { n.oldNumber, n.newNumber }.Where(num => requestNumbers.Contains(num)))
    .ToArrayAsync();

两种写法都会直接返回一维的字符串集合,不会包含未匹配的字段值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:54:03