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 に答える
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 に答える