c# - 数组包含来自表的相同数据,而不是使用 ToArray() 的不同数据
问题描述
我陷入了一个疯狂的问题。
我有一个字符串列表
string[] mat = { "AAD","AAV"};
我正在创建一个对象数组
Car[] cars = new Car[] {};
我查询 RefNumber 在 mat 数组中的表 Car
Cars = (from lc in _context.Car.Where(c => mat.Contains(c.RefNumber)) select lc).ToArray();
查询按预期运行(输出显示正确的 sql :
select * from Car c where c.RefNumber in ('AAD','AAV')
然而,该数组包含 2 行但数据相同!AAD。我从来没有看到阵列内填充了 AAV。怎么了?我也试过列表。我被困住了。
解决方案
您是否尝试将查询结果分组到两个数组中,一个用于 AAD,一个用于 AAV?如果是这样,我相信您正在寻找 Linq GroupBy。
就像是:
Cars = (from lc in _context.Car.Where(c => mat.Contains(c.RefNumber)) select lc).GroupBy(c => c.RefNumber).ToDictionary(d => d.Key, d => d.ToList());
这将向您返回一个字典对象,其中 AAD 和 AAV 作为您的键,以及每个对象的结果,在一个强类型的 Cars 列表中。但是,如果您的数据不包含任何 AAV 行,您将获得一个包含一个键的字典 AAD,其中包含两个结果。
推荐阅读
- regex - 如果全部为真,如何组合两个或多个正则表达式并匹配
- java - 来自 Hibernate 的多级对象的延迟加载
- vue.js - Vue:我可以在计算属性中使用组件过滤器吗?
- javascript - 在概念化如何将 if else 语句更改为 switch 语句时遇到问题
- microsoft-cognitive - 无法获取 Microsoft Academic 的认知服务实验室 API 密钥
- php - 可以在浏览器上使用 URL 发送电子邮件,但在 Angular 上它不起作用
- python - 需要一点帮助来理解 range() 和 len()
- reactjs - 将点击事件传递给子级
- python - GPU Mac Pro AMD OpenCL 上的矩阵乘法错误结果
- python - Python:全局使用局部变量不起作用