1

我有 2 个相关的课程:

public class BankHolidayColl
{
     public List<BankHoliday> BankHoliday { get; set; }
}

public class BankHoliday
{
    public string Name { get; set; }
    public DateTime Date { get; set; }
}

我删除了一些属性,但是这个对象是从 xml 文件构建的,如下所示:

var bankHoliday = GetBankHolidaysFromXml();

属性 bankHoliday.BankHoliday 让我可以访问名称和日期列表(这些名称是银行假日的名称)。

通过提供日期,我想检查列表是否包含日期,如果包含则返回名称。一段时间以来,我一直试图获得正确的组合,但没有成功。

提前致谢。

4

4 回答 4

1

您可以使用Where按日期过滤,然后Select仅获取您的姓名FirstOrDefault,如果没有这样的值,它将返回 null 或假期的名字(如果存在)

var result = BankHoliday
.Where(hol => hol.Date == youDate)
.Select(hot => new { hol.Name })
.FirstOrDefault();
于 2013-04-18T09:26:26.120 回答
1
var _result = BankHolidayColl.Where(x => x.Date == youDate)
                            .Select(x => new {Name=x.Name})
于 2013-04-18T09:27:05.140 回答
1

使用FirstOrDefault,例如:

public class BankHolidayColl
{
    public List<BankHoliday> BankHoliday { get; set; }

    public BankHoliday GetBankHoliday(DateTime date)
    {
        if (BankHoliday == null || BankHoliday.Count == 0)
            return null;
        return BankHoliday.FirstOrDefault(h => h.Date.Date == date.Date);
    }
}

然后你得到或具有给定日期null的第一个实例:BankHoliday

BankHoliday bh = myBankHolidayColl.GetBankHoliday(DateTime.Now);
if(bh != null)
{
    string bhName = bh.Name;
}

如果您坚持使用仅返回名称的方法,请添加:

public string GetBankHolidayName(DateTime date)
{
    if (BankHoliday == null || BankHoliday.Count == 0)
        return null;
    return BankHoliday.Where(h => h.Date.Date == date.Date)
                      .Select(h => h.Name)
                      .FirstOrDefault();
}
于 2013-04-18T09:27:37.660 回答
1

你可以试试这个

BankHoliday.Where(b => b.Date == someDate).Select(b => b.Name)
于 2013-04-18T09:29:58.870 回答