30

我有这种方法试图获取事物列表:

 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,因为这可能会破坏调用代码。这有可能还是我完全错了?

4

5 回答 5

72

这些答案很好并且确实有效,但是我一直觉得使用 Empty 而不是创建新 List 更清洁:

Enumerable.Empty<Thing>().AsQueryable();
于 2014-08-06T13:12:37.263 回答
10

尝试以下操作:

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;
            }
        }
于 2012-12-13T20:23:12.690 回答
7

我会添加块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;
            }

        }

    }
于 2012-12-13T20:23:32.503 回答
4

返回空的 IQueryable<> DbSet.Take(0)

于 2017-03-02T15:56:08.660 回答
3

我认为这会更整洁:

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();
    }
}
于 2015-05-07T10:00:27.213 回答