我有两个相关的课程:
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让我可以访问名单和日期列表(名称是银行假期的名称)。
通过提供日期,我想检查列表是否包含日期,如果是,则返回名称。我一直试图在没有任何成功的情况下获得正确的组合。
提前致谢。
答案 0 :(得分:1)
您可以使用在何处按日期过滤,然后选择以仅获取您的名称, FirstOrDefault ,如果
var result = BankHoliday
.Where(hol => hol.Date == youDate)
.Select(hot => new { hol.Name })
.FirstOrDefault();
答案 1 :(得分:1)
var _result = BankHolidayColl.Where(x => x.Date == youDate)
.Select(x => new {Name=x.Name})
答案 2 :(得分: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();
}
答案 3 :(得分:1)
你可以试试这个
BankHoliday.Where(b => b.Date == someDate).Select(b => b.Name)