2

次の例外が発生しています: LINQ to Entities はメソッド 'Int64 ToInt64(System.String)' メソッドを認識せず、このメソッドはストア式に変換できません。

long.Parse(ProjectID.ToString()) があり、Convert.ToInt64 を使用するという提案がありましたが、それでも同じ例外が発生します

string projID = ProjectFileID.ToString();

            var d = (from f in context.FileInfo
                     where f.ID == Convert.ToInt64(projID)
                     select (f));
4

2 に答える 2

13

クエリの外で変換を行うだけなので、結果を type の変数と直接比較しますlong

// TODO: Error handling
long projID = Convert.ToInt64(ProjectFileID.ToString());

var d = (from f in context.FileInfo
         where f.ID == projID
         select (f));

また、 を呼び出しToString()ていることを考えるとProjectFileID、代わりにキャストすることもできます。これは、intそれらの行に沿ってまたは何かであるように思われるからです。

于 2012-04-10T19:42:22.700 に答える
0

その理由は、クエリ自体の内部で変換を実行しようとするためであり、舞台裏の SQL にはその拡張機能の定義がありません。回避策は、クエリの外側で (一時変数に) long に変換し、それを LINQ に渡すことです。

于 2012-04-10T19:44:17.460 に答える