result
結果セットを-variableに再割り当てしないというマイナーエラーを除いて。
個人的には、実際に個別の値を受け取る必要がある場合は、個別を使用する方がはるかに明確だと思います。Groupbyは、このような場合に使用するのが明確ではありません。行全体を返すことを目的としている場合は、以下の最初のサンプル、または2番目のサンプルを参照してください。
class Program
{
static DataTable GetData()
{
DataTable table = new DataTable();
table.Columns.Add("Visits", typeof(int));
table.Columns.Add("URL_Link", typeof(string));
table.Rows.Add(57, "yahoo.com");
table.Rows.Add(130, "google.com");
table.Rows.Add(92, "google.com");
table.Rows.Add(25, "home.live.com");
table.Rows.Add(30, "stackoverflow.com");
table.Rows.Add(1, "stackoverflow.com");
table.Rows.Add(7, "mysite.org");
return table;
}
static void Main(string[] args)
{
var res = GetData()
.AsEnumerable()
.GroupBy(row => row.Field<string>("URL_Link"))
.Select(grp => grp.First());
foreach (var item in res)
{
string text = "";
foreach (var clm in item.ItemArray)
text += string.Format("{0}\t", clm);
Console.WriteLine(text);
}
Console.ReadLine();
}
}
これは多かれ少なかれあなたがすでに提供したものです。まず、変数を再割り当てしませんでした。次に、ItemArrayからフィールドにアクセスする必要があります。上記のサンプルを見ると、次の出力が得られています。
57 yahoo.com
130 google.com
25 home.live.com
30 stackoverflow.com
7 mysite.com
Select、Orderby、Where句を指定する必要がある場合があることを覚えておいてください。これらの行の特定を返す必要性によって異なります(つまり、ほとんどの訪問で重複します)。
URL_Link
が必要な、または明確な結果から戻りたい唯一のフィールドである場合、このサンプルは明確でまっすぐ進んでいます。必要のないフィールドを選択して、区別するだけです。
static void Main(string[] args)
{
var res = GetData()
.AsEnumerable()
.Select(d=>d.Field<string>("URL_Link"))
.Distinct();
foreach (var item in res)
Console.WriteLine(item.ToString());
Console.ReadLine();
}