12

私は Entity Framework を使用しており、var を取得してデータベースの iint に変換するコード行があります。

var record = context.enrollments.SingleOrDefault
  (row => row.userId == int.Parse(UserID) && row.classId == int.Parse(ClassID));

実行しようとするたびに、rhis エラーが発生します。「LINQ to Entities はメソッド 'Int32 Parse(System.String)' メソッドを認識しないため、このメソッドはストア式に変換できません。」

私もこれを試しました

 var record = context.enrollments.FirstOrDefault
  (row => row.userId == Convert.ToInt32(UserID) 
  && row.classId == Convert.ToInt32(ClassID));

そして、「LINQ to Entities はメソッド 'Int32 ToInt32(System.String)' メソッドを認識しないため、このメソッドはストア式に変換できません」というエラー メッセージが表示されるだけです。

最後に、これも試してみましたが、これは珍しいことだとわかっていますが、過去に同様の状況で機能していました.

var record = context.enrollments.SingleOrDefault
  (row => row.userId == CommonDLL.Sanitize<int>.ConvertType(UserID) 
  && row.classId == CommonDLL.Sanitize<int>.ConvertType(ClassID));

このエラーが発生します。ご覧のとおり、さまざまなことを試してみましたが、何も機能していません。

4

3 に答える 3

20

では、でサポートされてLinq to Entityいる のメソッドを使用して、それらを自分の側で実行できるように変換する必要があります。queryproviderexpression treeData Base

すべてのプロバイダーは、デフォルトで ( Read More Here ) と呼ばれるいくつかのメソッドをサポートする必要Canonical Functionsあります。また、 ( Read More Here ) および ( Here ) で使用するuser defined functionand stored procedureasを定義することもできます。edm functionslinq query

expression treeさらに、プロバイダーによってサポートされ、EntityFunctionsおよびSqlFunctionsにあるメソッドに変換できるメソッドを使用できます。

最後に、質問については、次のようにクエリの前にUserID変換できます。ClassID

var UID = int.Parse(UserID);
var CID = int.Parse(ClassID);
var record = context.enrollments.SingleOrDefault
    (row => row.userId == UID && row.classId == CID);
于 2014-04-24T16:06:19.207 に答える
1

これは私のために働く:

  var iId = int.Parse(TextBox1.Text);
 var item = db.Items.Where(p => p.ItemID == iId ).FirstOrDefault();

その作業を行うには、ラムダ式の外でテキストボックスの値を変換する必要があります。

于 2016-08-12T05:29:10.810 に答える