如何在LINQ中使用GroupBy查找丢失的物品? - c#

我有这样的情况,我收集了这些物品

public class Submission {
    public DateTime ProcessedDate { get; set; }
    public string UserName { get; set; }
}

而且我需要检查用户名的集合,例如:

string[] names = new string{"Paul", "John", "George", "Ringo"};

我想找出缺少提交内容的日期(并非所有这些用户名都有条目的日期)。因此,假设测试数据如下:

var submissions = new List<Submission>();
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 1), UserName = "Paul" });
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 1), UserName = "John" });
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 1), UserName = "George" });
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 1), UserName = "Ringo" });
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 2), UserName = "Paul" });
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 2), UserName = "John" });
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 3), UserName = "George" });
submissions.Add(new Submission() { ProcessedDate = new DateTime(2018, 1, 3), UserName = "Ringo" });

1/1提交了所有用户名,但是1/2和1/3都是缺少的条目,我如何返回丢失的条目的集合(缺少日期和该日期的用户)?

2018-01-02-乔治,林戈

2018-01-03-保罗,约翰

参考方案

如果只需要日期,请使用以下查询:

var result = submissions.GroupBy(o => o.ProcessedDate)
    .Where(o => names.Any(x => !o.Any(s => s.UserName == x)))
    .Select(o => o.Key)
    .ToList();

如果需要Submission对象的列表,请使用以下对象:

var resultWithSubmissions = submissions.GroupBy(o => o.ProcessedDate)
    .Where(o => names.Any(x => !o.Any(s => s.UserName == x)))
    .SelectMany(o => o)
    .ToList();

如果您需要每个日期缺少用户名的列表,请使用以下查询:

var resultWithMissingNames = submissions.GroupBy(o => o.ProcessedDate)
    .Where(o => names.Any(x => !o.Any(s => s.UserName == x)))
    .Select(o => new { ProcessedDate = o.Key, MissingNames = string.Join(",", names.Except(o.Select(x => x.UserName)))})
    .ToList();

Python 3运算符>>打印到文件 - python

我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if not nmake: depend = open(".depend", "a") dependmak = open(".depend.mak&#…

无法解析Json响应 - php

我正在尝试解析一个包含产品类别的JSON文件,然后解析这些类别中的产品,并在div中显示它们。我的问题:虽然我可以获取类别,但我不知道如何索取产品(并将它们显示在类别下)。我的剧本:<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> …

在xpath中选择多个条件 - php

我正在尝试使用来自高尔夫比赛的xml提要,以显示每个高尔夫球手在高尔夫球场上的位置。目前,我想展示符合两个条件的所有高尔夫球手(排在前25名,以及所有加拿大高尔夫球手)。这是xml提要的示例。<GolfDataFeed Type="Leaderboards" Timestamp="3/21/2012 9:18:09 PM&…

使用javascript在客户端的列表视图中选择所有复选框 - javascript

我有一个列表视图,在标题中有一个复选框。如果标题复选框已选中/未选中,我想选择行中的所有复选框。如何在客户端实现此目标?这是ListView设计代码。<asp:ListView ID="lvTypes" runat="server" GroupPlaceholderID="groupPlaceHolde…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…