【发布时间】:2013-06-20 22:56:23
【问题描述】:
我有一个我一直在使用的方法来对付 IEnumerable 没问题。但是我也想开始对 IQueryable 使用它。但是,我目前拥有它的方式无法正常工作,因为它试图对数据库执行我的方法。
情况如下。如果从中选择的值为 null 或属性的 Id 和名称(如果存在),我希望我选择的对象上的属性为 null。例如:
var foos = FooRepository.All().Select(s => new FooBrief()
{
Id = s.Id,
Customer = SimpleData.To(s.Customer, m => m.Id, m => m.Name)
});
SimpleData.To 的样子:
public class SimpleData
{
public int Id { get; set; }
public string Name { get; set; }
public static SimpleData To<T>(T t, Func<T, int> id, Func<T, string> name) where T : class
{
if (t != null)
{
return new SimpleData { Id = id(t), Name = name(t) };
}
return null;
}
}
有没有什么办法可以让我在允许它对数据库执行的同时获得这种行为?
注意:由于我代码中其他地方的原因,我不能使用 .ToList()。稍后我可能会添加额外的过滤器
【问题讨论】:
-
你能用
ToArray吗? :-) 以及你不能这样做的原因可能是相关的。 -
我不能这样做的原因是我可能需要在此之后向 iqueryable 添加附加子句。所以我仍然希望它对数据库执行
-
本帖有相关资料...stackoverflow.com/questions/17187395/…
标签: c# entity-framework iqueryable