【发布时间】:2013-12-07 14:52:05
【问题描述】:
我有以下代码:
private IEnumerable<TrainScheduleViewModel> ListSelect(IQueryable<TrainSchedule> query, Page page)
{
List<TrainScheduleViewModel> viewModels = query
.Select(t => new TrainScheduleViewModel
{
Id = t.Id,
...
DaysOfWeek = BuildDaysOfWeek(t.DaysOfWeek)
})
.Page(page)
.ToList();
return viewModels;
}
private string BuildDaysOfWeek(IEnumerable<DayOfWeek> daysOfWeek)
{
var daysOfWeekStr = string.Empty;
return daysOfWeek.Aggregate(daysOfWeekStr,
(current, dayOfWeek) => current + ";" + CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int) dayOfWeek]);
}
在调试器中,query 有一个对象,DaysOfWeek 属性已填充。但是,在BuildDaysOfWeek 方法中,集合是空的。你能解释一下为什么吗?
两张图片:
PS.1 这是属性的映射:
<bag name="DaysOfWeek" cascade="all-delete-orphan" table="`ScheduleOnDaysOfWeek`">
<key column="`trainScheduleId`" not-null="true"/>
<element column="`dayOfWeek`" type="System.DayOfWeek" not-null="true" />
</bag>
【问题讨论】:
-
如果在调试器中展开变量it,值会出现吗?
-
@Baldrick:在
BuildDaysOfWeek?没有 -
@user348173
DaysOfWeek属性填充了来自query的每个对象?或者它可以是空的? -
您使用的是哪个查询提供程序?例如,LINQ to Objects、LINQ to SQL、Entity Framework。还是别的什么?
-
@Grundy:只有一个对象。不能为空。
标签: c# linq iqueryable