C# 从列表中删除类似项
从SQL视图返回以下数据:C# 从列表中删除类似项,c#,linq,entity-framework,linq-to-entities,C#,Linq,Entity Framework,Linq To Entities,从SQL视图返回以下数据: Name CandidateID Filled Tom Jones 1003436 2014-05-09 07:13:53.087 Tom Jones 1003436 2014-05-09 07:13:18.957 Ed Harris 1421522 2014-05-09 08:17:20.234 我只想要一张汤姆·琼斯的唱片,上面有最近的记录。在
Name CandidateID Filled
Tom Jones 1003436 2014-05-09 07:13:53.087
Tom Jones 1003436 2014-05-09 07:13:18.957
Ed Harris 1421522 2014-05-09 08:17:20.234
我只想要一张汤姆·琼斯的唱片,上面有最近的记录。在从服务器获取数据时或从服务器获取数据后,如何在C#/LINQ中实现这一点?您需要分组方式,如下所示
var q = from n in table
group n by n.CandidateID into g
select g.OrderByDescending(t=>t.Filled).FirstOrDefault();
var distinctItems = ls.GroupBy(x => x.CandidateID).Select(y => y.First());
您需要分组方式,如下所示
var distinctItems = ls.GroupBy(x => x.CandidateID).Select(y => y.First());
也许是这样的:
var q = from n in table
group n by new {n.CandidateID,n.Name} into g
select new
{
CandidateID = g.Key.CandidateID,
Name = g.Key.Name,
Filled = g.Max(t=>t.Filled)
};
测试类
class Foo
{
public string Name { get; set; }
public int CandidateID { get; set; }
public DateTime Filled { get; set; }
}
测试用例
var ls=new List<Foo>
{
new Foo(){Name="Tom Jones",CandidateID=1003436,
Filled=DateTime.Parse("2014-05-09 07:13:53.087")},
new Foo(){Name="Tom Jones",CandidateID=1003436,
Filled=DateTime.Parse("2014-05-09 07:13:18.957")},
new Foo(){Name="Ed Harris",CandidateID=1421522,
Filled=DateTime.Parse("2014-05-09 08:17:20.234")}
};
var q =
(from n in ls
group n by new {n.CandidateID,n.Name} into g
select new
{
CandidateID = g.Key.CandidateID,
Name = g.Key.Name,
Filled = g.Max(t=>t.Filled)
});
也许是这样的:
var q = from n in table
group n by new {n.CandidateID,n.Name} into g
select new
{
CandidateID = g.Key.CandidateID,
Name = g.Key.Name,
Filled = g.Max(t=>t.Filled)
};
测试类
class Foo
{
public string Name { get; set; }
public int CandidateID { get; set; }
public DateTime Filled { get; set; }
}
测试用例
var ls=new List<Foo>
{
new Foo(){Name="Tom Jones",CandidateID=1003436,
Filled=DateTime.Parse("2014-05-09 07:13:53.087")},
new Foo(){Name="Tom Jones",CandidateID=1003436,
Filled=DateTime.Parse("2014-05-09 07:13:18.957")},
new Foo(){Name="Ed Harris",CandidateID=1421522,
Filled=DateTime.Parse("2014-05-09 08:17:20.234")}
};
var q =
(from n in ls
group n by new {n.CandidateID,n.Name} into g
select new
{
CandidateID = g.Key.CandidateID,
Name = g.Key.Name,
Filled = g.Max(t=>t.Filled)
});
请指定您认为“相似”的内容和不符的内容。请指定您所认为的“相似”和“不”。我正在键入的代码完全相同:D欢呼。我认为您应该过滤“<代码>计数> /代码> 1的组,以便只获得重复数据。如果我错了请纠正我的错误,我误读了OP的问题,以为他想从数据库中删除重复的数据,结果他只想过滤他的观点。对不起:)。顺便说一句,这是个好办法。OP希望过滤掉重复的内容。没有得到副本。我用测试更新答案case@kravits88:没问题。很乐意帮忙;)与我刚才键入的代码完全相同:D干杯。我认为您应该筛选
Count
>1的组,以仅获取重复数据。如果我错了请纠正我的错误,我误读了OP的问题,以为他想从数据库中删除重复的数据,结果他只想过滤他的观点。对不起:)。顺便说一句,这是个好办法。OP希望过滤掉重复的内容。没有得到副本。我用测试更新答案case@kravits88:没问题。很乐意帮忙;)