如何将Linq结果转换为视图模型




在填充comobx时,我需要将Linq结果转换为视图模型。

事实上,我查询记录,然后在循环中填充视图模型的列表,但这似乎有点奇怪:

public static IEnumerable<ComboBoxActivities> GetActivitySelectList()
{
using(ApplicationDbContext db = new ApplicationDbContext())
{
var result = from activity in db.Activities
where activity.Available
select new
{
ActivityId = activity.Id,
ActivityName = activity.ActivityName,
Available = activity.Available
};
List<ComboBoxActivities> list = new List<ComboBoxActivities>();
foreach(var res in result)
{
ComboBoxActivities listItem = new ComboBoxActivities()
{
ActivityId= res.ActivityId,
ActivityName= res.ActivityName,
Available= res.Available
};
list.Add(listItem);
}
return list;
}
}

这真的是正确的方式吗?我也试过:

var result = from activity in db.Activities
where activity.Available
select new ComboBoxActivities()
{
ActivityId = activity.Id,
ActivityName = activity.ActivityName,
Available = activity.Available
};

但随后我的razorview崩溃,并显示不支持直接绑定到quers(DbSet,DbQuery…(的消息。

您可以使用ToList()IEnumerable<T>转换为List<T>

public static List<ComboBoxActivities> GetActivitySelectList()
{
using(ApplicationDbContext db = new ApplicationDbContext())
{
var result = from activity in db.Activities
where activity.Available
select new ComboBoxActivities()
{
ActivityId = activity.Id,
ActivityName = activity.ActivityName,
Available = activity.Available
};
return result.ToList();
}
}

至于从表查询加载ComboBox,ComboBox有一个DataSource属性,您可以将列表分配给它。

最新更新