如何使用Linq检查返回此对象的值

时间:2013-04-18 09:23:05

标签: asp.net linq

我有两个相关的课程:

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 个答案:

答案 0 :(得分:1)

您可以使用在何处按日期过滤,然后选择以仅获取您的名称, FirstOrDefault ,如果,则返回null没有这样的价值或假期的名字,如果存在的话

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)