如何使用Linq在列上使用Distinct

Luk*_*101 5 c# linq datatable linq-to-objects

这是我的代码:

var query = from row1 in table.AsEnumerable()
                         let time = row1.Field<DateTime>("time")
                         let uri = row1.Field<string>("cs-uri-stem")
                         let ip = row1.Field<string>("c-ip")
                         let questionid = row1.Field<int>("questionid")
                         where questionid == int.Parse(table.Rows[x]["questionid"].ToString())
                         select new
                         {
                             time,
                             uri,
                             ip,
                             questionid
                         };
Run Code Online (Sandbox Code Playgroud)

IP列应该是唯一的.我不能在ip字段中有重复的项目.是否可以在linq中执行此操作

tva*_*son 7

您可以通过ip地址分组来实现您想要的功能,但是当您有重复项时,您需要知道如何处理其他字段.

var query = from row1 in table.AsEnumerable()
                     let time = row1.Field<DateTime>("time")
                     let uri = row1.Field<string>("cs-uri-stem")
                     let ip = row1.Field<string>("c-ip")
                     let questionid = row1.Field<int>("questionid")
                     where questionid == int.Parse(table.Rows[x]["questionid"].ToString())
                     group by ip into g
                     select new
                     {
                         time = g.time.First(),
                         uri = g.uri.First(),
                         ip = g.Key,
                         questionid = g.questionid.First()
                     };
Run Code Online (Sandbox Code Playgroud)