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
上面的一个给了我零结果,这是错误的。。 当查询第二次运行时,mergedRows在第一个条件之后具有结果数据。在第二次查询执行之后,我仍然没有得到结果 但是使用组合条件的相同查询可以很好地工作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
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();