C# 如何将空字符串作为组包含在linq中的GROUPBY中?
我有一个字符串类型的条形码列。如何按包含空字符串作为组的条形码列进行分组和其他值是唯一的。 我的桌子如下所示 结果是这样的 但我需要得到如下结果 谢谢。试试这个:C# 如何将空字符串作为组包含在linq中的GROUPBY中?,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我有一个字符串类型的条形码列。如何按包含空字符串作为组的条形码列进行分组和其他值是唯一的。 我的桌子如下所示 结果是这样的 但我需要得到如下结果 谢谢。试试这个: var res=productImportList.GroupBy(f => String.IsNullOrWhiteSpace(f.BarCode) ? String.Empty : f.BarCode).Select(x=>x.First()); 这将确保所有类型的值、null、空字符串和所有空白字符串都被同等
var res=productImportList.GroupBy(f => String.IsNullOrWhiteSpace(f.BarCode) ? String.Empty : f.BarCode).Select(x=>x.First());
这将确保所有类型的值、null
、空字符串和所有空白字符串都被同等对待。尝试以下操作:
var res=productImportList.GroupBy(f => String.IsNullOrWhiteSpace(f.BarCode) ? String.Empty : f.BarCode).Select(x=>x.First());
这将确保所有类型的值、
null
、空字符串和所有空白字符串都被同等对待。根据您关于顺序无关紧要的评论,基于BarCode()
的值创建两个查询,然后将它们连接起来
var productImportList = ... // your query to get all data
// get all records with no BarCode
var noBC = productImportList.Where(x => x.BarCode == null);
// get the first record in each BarCode group
var hasBC = productImportList.Where(x => x.BarCode != null).GroupBy(f => f.BarCode).Select(x=>x.First());
// concatenate the queries
var result = noBC.Concat(hasBC);
注:以上假设no
条码
表示其空
(如果它实际上是一个空字符串,那么您可以使用.Equals(string.empty)
)基于您的注释,即顺序无关紧要,基于条码()
的值创建两个查询,然后将它们连接起来
var productImportList = ... // your query to get all data
// get all records with no BarCode
var noBC = productImportList.Where(x => x.BarCode == null);
// get the first record in each BarCode group
var hasBC = productImportList.Where(x => x.BarCode != null).GroupBy(f => f.BarCode).Select(x=>x.First());
// concatenate the queries
var result = noBC.Concat(hasBC);
注:上述假设no
条码
表示其空
(如果它实际上是一个空字符串,那么您可以使用.Equals(string.empty)
),因此您希望每个带有空条码的条目在结果中结束。一个技巧可能是使空条目在分组中唯一:
productImportList.GroupBy(f => string.IsNullOrWhiteSpace(f.Barcode)
? Guid.NewGuid().ToString()
: f.Barcode )
.Select(x=>x.First())
结果:
条形码标题
10 abc
aaa
15桶
20立方厘米
ddd
fff
24千兆克
48小时
因此,您希望每个带有空条形码的条目最终都出现在结果中。一个技巧可能是使空条目在分组中唯一:
productImportList.GroupBy(f => string.IsNullOrWhiteSpace(f.Barcode)
? Guid.NewGuid().ToString()
: f.Barcode )
.Select(x=>x.First())
结果:
条形码标题
10 abc
aaa
15桶
20立方厘米
ddd
fff
24千兆克
48小时
条目是空的,标准是条形码是重复的,然后选择第一行作为缺省值,如果条形码是空的,那么它被认为是ROW。你需要用条形码和标题分组来获得你正在展示的输出。你所声明的结果缺少一行。<代码> DDD 这是一个不正确的图像?条目是否需要有效是什么标准?是的,String是空的标准就像条形码是重复的那样,然后选择第一行作为默认值,如果条形码是空的,那么它被认为是ROW。你需要用条形码和标题来分组来获得你的输出。显示您声明想要的结果是缺少ddd
的一行,该行也是空的-这只是一个不正确的图像吗?但是如果productimportList包含大量数据,并且我们执行两个查询,这对性能是可行的。在我的网站中,有时ProductImportList包含100万个数据。只有您可以测试,您可能想为条形码
字段编制索引,但为什么您会返回一百万行呢?您不可能在视图中使用那么多数据。它的所有行都来自json格式的url,并转换为列表,需要存储在数据库中。这意味着从url json和xml数据导入功能,但如果productimportList包含大量数据,我们执行两个查询,这对性能是可行的。在我的网站中,有时ProductImportList包含100万个数据。只有您可以测试,您可能想为条形码
字段编制索引,但为什么您会返回一百万行呢?您不可能在视图中使用那么多数据。它的所有行都来自json格式的url,并转换为列表,需要存储在数据库中。这意味着从url json和xml导入功能data@ljdhameliya 你没有接受这个答案。我能为你做点什么吗?@ljdhameliya你没有接受这个答案。我能为你做点什么吗?