Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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# 有没有办法从ObservableCollection中过滤非零数据?_C#_Sql - Fatal编程技术网

C# 有没有办法从ObservableCollection中过滤非零数据?

C# 有没有办法从ObservableCollection中过滤非零数据?,c#,sql,C#,Sql,有没有办法从值大于零的ObservableCollection中筛选和分组数据 我有一个加载到ObservableCollection中的excel文件,但在该文件中可能有一些值为零,根据此条件,我需要在SQL中运行查询以获取一些数据,但在运行查询时,使用这些零代码不会返回任何内容 范例 我需要为每个组合构建一个查询,但是在我的ObservableCollection中有超过90k条记录。我正在寻找一个聪明的解决方案,用相同的模式对所有记录进行分组(例如,在本例中是第3行和第4行)不需要具有相

有没有办法从值大于零的ObservableCollection中筛选和分组数据

我有一个加载到ObservableCollection中的excel文件,但在该文件中可能有一些值为零,根据此条件,我需要在SQL中运行查询以获取一些数据,但在运行查询时,使用这些零代码不会返回任何内容

范例

我需要为每个组合构建一个查询,但是在我的ObservableCollection中有超过90k条记录。我正在寻找一个聪明的解决方案,用相同的模式对所有记录进行分组(例如,在本例中是第3行和第4行)不需要具有相同的值,只有相同的模式才能使用所有这些代码运行单个大型查询

目前,我是这样做的:

foreach (var item in _sourceStructure)
        {
            query = prepareQuery(item);
            RunQuery(query);
            if (errorMessage.Length > 1)
            {
                Console.WriteLine(errorMessage);
            }
            query = "";
        }
在我的preparQuery方法中,我有这样的东西

query = @"SELECT Column1, Column2, Column3, Column4 FROM SomeTable WHERE "

if (!string.IsNullOrEmpty(item.Column1.ToString()) && item.Column1.ToString() != "0")
                {
                    query = query + "Column1= " + "'" + item.Column1.ToString() + "'" + " and ";
                }
                if (!string.IsNullOrEmpty(item.Column2.ToString()) && item.Column2.ToString() != "0")
                {
                    query = query + "Column2= " + "'" + item.Column2.ToString() + "'" + " and ";
                }
这工作“很好”,但需要很多时间才能完成。
如果你能找到更好的解决方案,我可以试试,我只是想听听你的建议。

不要再给ToString打这么多次电话了。您应该执行一次并存储值。并考虑使用String .Frad或StringBuilder。添加是非常资源密集型的

为了加快查询速度,您需要做两件事1)您需要一个为每一行返回数组的接口2)然后使用linq Any获取带零的行,如:var results=_sourceStructure.Where(x=>x.Any(y=>y==“0”).ToArray()@jdweng每次查询运行时(对于每条记录)都会调用接口,这样会更快吗?我不太熟悉接口,我知道如何实现它,但不知道如何提高速度。你能给我一个如何实现它的例子吗?在linq中实现它会比你目前的方式更快。