我知道有很多类似的问题,但它们看起来有点不同,我无法理解这些解决方案。
我有一个数据表dt2
。我想搜索一列并根据另一列的不同出现返回结果。所以我正在搜索一个频率,我可以得到多行,只要另一列中的数据不同,就可以了。
string spot = "";
string expression = "Freq = '" + frequency + "'"; //search column 4
int count = 0;
DataRow[] results;
results = dt2.Select(expression);
foreach (DataRow row in results)
{
spot = spot + Convert.ToString(results[count][0]) + " - "; //showing results from column 0
count = count + 1;
}
spot = spot.Substring(0, spot.Length - 3);
return spot;
results[count][0]
是我需要区分的列。
目前,在有4个频率的情况下,其中三个具有重复的列0' s,我得到了这个:
N1ADX - N1ADX - VA2FSQ - N1ADX
但我想要的是:
N1ADX - VA2FSQ
我该怎么做? 谢谢!
答案 0 :(得分:1)
你可以试试这样的......
DataTable results;
dt2.DefaultView.RowFilter = expression;
results = dt2.DefaultView.ToTable(true, "[name_of_column_0]");
foreach (DataRow row in results.rows)
{
...
}
View.ToTable
函数根据自己的数据返回数据表。第一个参数确定它是否只包含不同的值,第二个参数是一个参数数组,其中包含要包含在数据表中的列的名称。
如另一个答案所述,LINQ也是一个不错的选择。
答案 1 :(得分:0)
嗨谢谢你的回复。基于LINQ我终于得到了这个。我认为将foreach循环与数据表一起使用的想法对于如何思考这个问题很有帮助。
var query = results.Select(x => x.Field<string>("Call")).Distinct();
foreach (var callsign in query)
{
spot = spot + callsign + " - ";
}
spot = spot.Substring(0, spot.Length - 3);
感谢所有答案