1

私は.NETを初めて使用するので、ご容赦ください。

LinqToTwitterIEnumerableで奇妙な問題が発生しました。 クエリは、を返し、aは2つの投稿を保持していることを示します。 ただし、列挙子を呼び出そうとすると、nullポインター例外が発生します。
IEnumerableConsole.WriteLine
MoveNext()


コード

TwitterContext ctx = this.twitterContext;

IEnumerable<Status> statuses =
    from tweet in ctx.Status
        .AsEnumerable()
    select tweet;

IEnumerator<Status> eStat = statuses.GetEnumerator();

// The output is:
// System.Linq.Enumerable+WhereSelectEnumerableIterator`2[LinqToTwitter.Status,LinqToTwitter.Status]
// So this shows that the IEnumerable holds 2 status values
Console.WriteLine(eStat);

// This line gives the exception
// "Value cannot be null."
Boolean hasNext = eStat.MoveNext();

助けてくれてありがとう


スタックトレース

   at System.Reflection.RuntimeMethodInfo.MakeGenericMethod(Type[] methodInstantiation)
   at LinqToTwitter.TwitterQueryProvider.Execute[TResult](Expression expression)
   at LinqToTwitter.TwitterQueryable`1.GetEnumerator()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Broadcast.TwitterFeed.Program.Main(String[] args) in C:\Daten\TFS-Workspace\GD-TOP\Broadcast\Broadcast.TwitterFeed.Service\Broadcast.TwitterFeed\Program.cs:line 20
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
4

1 に答える 1

5

出力Console.WriteLineは、Enumeratorがタイプ[Status、Status]のジェネリックであり、2つの要素が含まれていることを示しています。あなたが受け取っている例外は、あなたが思うかもしれないように列挙子をループしない最初のクエリを実行した結果です。ステータスの割り当てを次のように変更する場合:

IEnumerable<Status> statuses =
(from tweet in ctx.Status
select tweet).ToList();

例外が割り当て行ではなく割り当て行で発生することがわかりますMoveNext()

これは、発生している例外が発生している理由を示していないことを理解しています。これは、ctxインスタンスのStatusコレクションのマッピングまたはポピュレーションの失敗の結果である可能性がありますが、デバッグの進行に役立つことを願っています。

乾杯

于 2013-02-18T10:02:53.970 に答える