首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含表中相同数据而不是使用ToArray()的不同数据的数组

包含表中相同数据而不是使用ToArray()的不同数据的数组
EN

Stack Overflow用户
提问于 2019-11-20 01:44:44
回答 2查看 55关注 0票数 0

我被一个疯狂的问题卡住了。

我有一个字符串列表

代码语言:javascript
复制
string[] mat = { "AAD","AAV"};

我正在创建一个对象数组

代码语言:javascript
复制
Car[] cars = new Car[] {};

查询RefNumber在mat数组中的Car表

代码语言:javascript
复制
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。怎么了?我也尝试过列表。我被卡住了。

EN

回答 2

Stack Overflow用户

发布于 2019-11-20 02:09:18

您是否正在尝试将查询结果分组到两个数组中,一个用于AAD,另一个用于AAV?如果是这样的话,我相信你正在寻找Linq GroupBy

类似于:

代码语言:javascript
复制
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作为关键字,并在一个强类型的汽车列表中显示每个关键字的结果。但是,如果您的数据不包含任何AAV行,那么您将获得一个字典,其中包含一个键,AAD,以及两个结果。

票数 0
EN

Stack Overflow用户

发布于 2019-11-20 03:10:33

谢谢大家!

我早该猜到了!我应该先使用IQueryable!

代码语言:javascript
复制
IQueryable<Car> cars = from ld in _context.Car.Where(c => mat.Contains(c.RefNumber))
                                             select new Car
                                             {
                                                 RefNumber = ld.RefNumber
                                            };
            Car [] ExistingCars = cars.ToArray();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58939979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档