查找通用列表的方法以搜索特定的星期几

Find method of Generic List to search specific Day of Week

我有一个 Generic List 个 CallDay 对象,每个 CallDay 对象都有 DayOfWeek List 我想查找 DayOfWeek 列表是否包含特定的一天。这是我的 C# 代码

public class CallDays
{
    public CallDays();


    public List<DayOfWeek> DayOWList { get; set; }
    public bool EveryDayOfWeek { get; set; }
    public bool PublicHoliday { get; set; }
}



private void IdentifyDay(List<CallDays> callDayList)
{
    // Some condition to set DayOFWeek filter criteria

    DayOfWeek dayOfWeekToFind = drInMemory.Start.DayOfWeek;

    foreach (var item in CallDayList)
    {
        // Here I need to find whether item.DayOWList contains DayOfWeek which matches dayOfWeekToFind 
        item.DayOWList.Find
    }
}

您可以使用 Linq 来查找包含它的第一个元素。所以,使用方法FirstOrDefault,在表达式上找到它,你可以检查DayOWList集合中是否有一个DayOfWeek对象,例如:

private void IdentifyDay(List<CallDays> callDayList)
{
    // Some condition to set DayOFWeek filter criteria

    DayOfWeek dayOfWeekToFind = drInMemory.Start.DayOfWeek;

    // find a object that contains the dayOfWeekToFind on the DayOWList collection
    CallDays result = CallDayList.FirstOrDefault(x => x.DayOWList.Any(d => d == dayOfWeekToFind));


    // you can use the result object here
}

如果您只想根据对象的 DayOWList 是否包含 dayOfWeekToFind 对所有 CallDays 对象执行某些操作,您可以这样做:

private void IdentifyDay(List<CallDays> callDayList)
{
    // Some condition to set DayOFWeek filter criteria

    DayOfWeek dayOfWeekToFind = drInMemory.Start.DayOfWeek;

    foreach (var item in callDayList)
    {
        if (item.DayOWList.Contains(dayOfWeekToFind))
        {
            // do something
        }
    }
}

或者你也可以这样做:

private void IdentifyDay(List<CallDays> callDayList)
{
    // Some condition to set DayOFWeek filter criteria

    DayOfWeek dayOfWeekToFind = drInMemory.Start.DayOfWeek;

    foreach (var item in CallDayList.Where(x => x.DayOWList.Contains(dayOfWeekToFind)))
    {
        // do something with the item
    }
}