我被一个疯狂的问题卡住了。
我有一个字符串列表
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。怎么了?我也尝试过列表。我被卡住了。
发布于 2019-11-20 02:09:18
您是否正在尝试将查询结果分组到两个数组中,一个用于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作为关键字,并在一个强类型的汽车列表中显示每个关键字的结果。但是,如果您的数据不包含任何AAV行,那么您将获得一个字典,其中包含一个键,AAD,以及两个结果。
发布于 2019-11-20 03:10:33
谢谢大家!
我早该猜到了!我应该先使用IQueryable!
IQueryable<Car> cars = from ld in _context.Car.Where(c => mat.Contains(c.RefNumber))
select new Car
{
RefNumber = ld.RefNumber
};
Car [] ExistingCars = cars.ToArray();https://stackoverflow.com/questions/58939979
复制相似问题