1800和d,c#,C#" /> 1800和d,c#,C#" />

C# Datatable使用两个不同的条件对同一列执行select linq查询,结果为零行 IEnumerable mergedRows=来自_gridData.AsEnumerable()中的myRow 选择myRow; i可数行; rows=来自mergedRows中的myRow,其中 double.Parse(myRow[“signalName”].ToString())>1800&& 选择myRow; 合并窗口=行; i可数行//重新初始化 rows=来自mergedRows中的myRow,其中 double.Parse(myRow[“signalName”].ToString())1800&& double.Parse(myRow[signalName].ToString())1800&& 选择myRow.ToList(); 合并窗口=行; 行=(来自mergedRows中的myRow,其中 double.Parse(myRow[“signalName”].ToString()) IEnumerable<DataRow> mergedRows = from myRow in _gridData.AsEnumerable() select myRow; var rows = (from myRow in mergedRows where double.Parse(myRow["signalName"].ToString())> 1800 && select myRow).ToList(); mergedRows = rows; rows = (from myRow in mergedRows where double.Parse(myRow["signalName"].ToString()) < 2400 select myRow).ToList(); private-double-SafeParse(字符串s) { 双d; 返回double.TryParse(s,out d)?d:0;//如果值不可解析,则返回零 } var results=(来自_gridData.AsEnumerable()中的myRow) 设d=SafeParse(myRow[signalName].ToString()) 其中d>1800和d

C# Datatable使用两个不同的条件对同一列执行select linq查询,结果为零行 IEnumerable mergedRows=来自_gridData.AsEnumerable()中的myRow 选择myRow; i可数行; rows=来自mergedRows中的myRow,其中 double.Parse(myRow[“signalName”].ToString())>1800&& 选择myRow; 合并窗口=行; i可数行//重新初始化 rows=来自mergedRows中的myRow,其中 double.Parse(myRow[“signalName”].ToString())1800&& double.Parse(myRow[signalName].ToString())1800&& 选择myRow.ToList(); 合并窗口=行; 行=(来自mergedRows中的myRow,其中 double.Parse(myRow[“signalName”].ToString()) IEnumerable<DataRow> mergedRows = from myRow in _gridData.AsEnumerable() select myRow; var rows = (from myRow in mergedRows where double.Parse(myRow["signalName"].ToString())> 1800 && select myRow).ToList(); mergedRows = rows; rows = (from myRow in mergedRows where double.Parse(myRow["signalName"].ToString()) < 2400 select myRow).ToList(); private-double-SafeParse(字符串s) { 双d; 返回double.TryParse(s,out d)?d:0;//如果值不可解析,则返回零 } var results=(来自_gridData.AsEnumerable()中的myRow) 设d=SafeParse(myRow[signalName].ToString()) 其中d>1800和d,c#,C#,上面的一个给了我零结果,这是错误的。。 当查询第二次运行时,mergedRows在第一个条件之后具有结果数据。在第二次查询执行之后,我仍然没有得到结果 但是使用组合条件的相同查询可以很好地工作 IEnumerable<DataRow> mergedRows = from myRow in _gridData.AsEnumerable() select myRow; IEnumerable&l

上面的一个给了我零结果,这是错误的。。 当查询第二次运行时,mergedRows在第一个条件之后具有结果数据。在第二次查询执行之后,我仍然没有得到结果

但是使用组合条件的相同查询可以很好地工作

IEnumerable<DataRow> mergedRows = from myRow in _gridData.AsEnumerable()
                                              select myRow;

IEnumerable<DataRow> rows;

rows = from myRow in mergedRows where  
double.Parse(myRow["signalName"].ToString())> 1800 &&
                                       select myRow;

mergedRows = rows;
IEnumerable<DataRow> rows;//reinitializing 
rows = from myRow in mergedRows where
double.Parse(myRow["signalName"].ToString()) < 2400
                                       select myRow;
IEnumerable mergedRows=来自_gridData.AsEnumerable()中的myRow
选择myRow;
i可数行;
rows=来自mergedRows中的myRow,其中
double.Parse(myRow[signalName].ToString())>1800&&
double.Parse(myRow[signalName].ToString())<2400
选择myRow;
这一个给了我正确的精确结果


你能解释一下原因吗?

我想你可能遇到了“”问题

这包含您的“源”数据

您可以尝试通过将查询包装在.ToList()中来贪婪地执行查询

IEnumerable mergedRows=来自_gridData.AsEnumerable()中的myRow
选择myRow;
var rows=(来自mergedRows中的myRow,其中
double.Parse(myRow[“signalName”].ToString())>1800&&
选择myRow.ToList();
合并窗口=行;
行=(来自mergedRows中的myRow,其中
double.Parse(myRow[“signalName”].ToString())<2400
选择myRow.ToList();
<>如果你总是要执行这两个过滤器,我会考虑清理整个事情,并把所有的工作合并成一个查询。< /P>
IEnumerable<DataRow> mergedRows = from myRow in _gridData.AsEnumerable()
                                              select myRow;

var rows = (from myRow in mergedRows where  
            double.Parse(myRow["signalName"].ToString())> 1800 &&
            select myRow).ToList();

mergedRows = rows;


rows = (from myRow in mergedRows where
        double.Parse(myRow["signalName"].ToString()) < 2400
        select myRow).ToList();
private-double-SafeParse(字符串s)
{
双d;
返回double.TryParse(s,out d)?d:0;//如果值不可解析,则返回零
}
var results=(来自_gridData.AsEnumerable()中的myRow)
设d=SafeParse(myRow[signalName].ToString())
其中d>1800和d<2400
选择myRow.ToList();

您可以发布或检查您的
\u gridData
的值吗?
 IEnumerable<DataRow> mergedRows = from myRow in _gridData.AsEnumerable()
                                          select myRow;
IEnumerable<DataRow> rows = from myRow in mergedRows where  
                            double.Parse(myRow["signalName"].ToString())> 1800 
                            select myRow;
mergedRows = rows;
IEnumerable<DataRow> mergedRows = from myRow in _gridData.AsEnumerable()
                                              select myRow;

var rows = (from myRow in mergedRows where  
            double.Parse(myRow["signalName"].ToString())> 1800 &&
            select myRow).ToList();

mergedRows = rows;


rows = (from myRow in mergedRows where
        double.Parse(myRow["signalName"].ToString()) < 2400
        select myRow).ToList();
private double SafeParse(string s)
{
    double d;
    return double.TryParse(s, out d) ? d : 0; //return zero if the value is unparsable
}


var results = (from myRow in _gridData.AsEnumerable()
              let d = SafeParse(myRow[signalName].ToString()) 
              where d > 1800 && d < 2400
              select myRow).ToList();