c#从数据表中选择不同的行

c#从数据表中选择不同的行,c#,select,datatable,C#,Select,Datatable,我知道有很多类似的问题,但它们似乎都有点不同,我不能完全理解解决方案。 我有一个数据表dt2。我想搜索一列,并根据另一列的不同情况返回结果。所以我在搜索一个频率,我可以得到多行,只要另一列中的数据是不同的,这是可以的 string spot = ""; string expression = "Freq = '" + frequency + "'"; //search column 4 int count = 0; DataRow[] results; results = dt2.Selec

我知道有很多类似的问题,但它们似乎都有点不同,我不能完全理解解决方案。 我有一个数据表
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;
结果[count][0]
是我需要区分的列。 目前,在有4个频率的情况下,其中三个具有重复的0列,我得到:

N1ADX-N1ADX-VA2FSQ-N1ADX

但我想要的是:

N1ADX-VA2FSQ

我该怎么做?
谢谢

你可以试试这样的

DataTable results;
dt2.DefaultView.RowFilter = expression;
results = dt2.DefaultView.ToTable(true, "[name_of_column_0]");
foreach (DataRow row in results.rows)
{
    ...
}
View.ToTable
函数根据自己的数据返回数据表。第一个参数确定它是否只包含不同的值,第二个参数是一个参数数组,其中包含要包含在datatable中的列的名称


正如另一个答案中所述,如果可以的话,LINQ也是一个不错的选择。

您好,谢谢您的回复。基于LINQ,我最终得到了这个。我认为直接将foreach循环与datatable一起使用的想法有点像是在思考这个问题

                    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);
var query=results.Select(x=>x.Field(“Call”)).Distinct();
foreach(var callsign-in查询)
{
spot=spot+呼号+“-”;
}
点=点子串(0,点长度-3);
谢谢你的回答