Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将空字符串作为组包含在linq中的GROUPBY中?_C#_Asp.net Mvc_Linq - Fatal编程技术网

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你没有接受这个答案。我能为你做点什么吗?