我有一個方法,我一直在使用IEnumerable沒有問題。不過,我想開始將它用於IQueryable。但是,我現在擁有它的方式不會像它試圖對數據庫執行我的方法那樣工作。一種圍繞LINQ to Entities的方法不能識別該方法?
情況如下。如果從中選擇的值爲null,或者如果存在屬性的Id和Name,我希望我選擇的對象的屬性爲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添加額外的子句。所以我仍然希望它對數據庫執行 –
這裏有相關信息... http://stackoverflow.com/questions/17187395/using-my-own-method-with-linq-to-entities – qujck