我有这种方法试图得到一些东西:
private static IQueryable<Thing> GetThings(int thingsType)
{
try
{
return from thing in entities.thing.Include("thingStuff")
select thing;
}
catch (Exception exception)
{
return new EnumerableQuery<Thing>(?????);
}
}
}
如果我因为某种原因无法运行查询,我想返回一个空的IQueryable。我不想返回NULL,因为这可能会破坏调用代码。是否可能或者我对此完全错了?
答案 0 :(得分:44)
这些答案很好并且有效,但是我一直觉得使用Empty而不是创建一个新的List更清洁:
Enumerable.Empty<Thing>().AsQueryable();
答案 1 :(得分:9)
尝试以下方法:
private static IQueryable<Thing> GetThings(int thingsType)
{
IQueryable<Thing> things = new List<Thing>().AsQueryable();
try
{
things = from thing in entities.thing.Include("thingStuff")
select thing;
return things;
}
catch (Exception exception)
{
return things;
}
}
答案 2 :(得分:5)
我会添加块finally {}
并将我的返回类型放在该代码中。
这将通过返回应用程序所期望的类型来解决问题。
private static IQueryable<T> GetThings(int thingsType)
{
IQueryable<T> list = new List<Thing>().AsQueryable();
try
{
list = from thing in entities.thing.Include("thingStuff")
select t;
}
catch (Exception exception)
{
// handle exception here;
}
finally {
return list;
}
}
}
答案 3 :(得分:1)
我认为这会更整洁:
private static IQueryable<T> GetThings(int thingsType)
{
try
{
return from thing in entities.thing.Include("thingStuff")
select t;
}
catch (Exception exception)
{
// Exception handling code goes here
return new List<Thing>().AsQueryable();
}
}
答案 4 :(得分:1)
返回空IQueryable&lt;&gt; DbSet.Take(0)