Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表中删除类似项_C#_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

C# 从列表中删除类似项

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 我只想要一张汤姆·琼斯的唱片,上面有最近的记录。在

从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

我只想要一张汤姆·琼斯的唱片,上面有最近的记录。在从服务器获取数据时或从服务器获取数据后,如何在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:没问题。很乐意帮忙;)