0

Entity Framework linq/lambda クエリを介して SQL Server クエリの結果を入力しようとしているリストボックスがあります。コンボボックスからの値をクエリに供給しています。次のような多くのエラーが発生し続けます: 「System.Object」型の定数値を作成できません。このコンテキストでは、プリミティブ型 (Int32、String、および Guid など) のみがサポートされます。

これを修正する方法について何か提案はありますか? グリッドに 2 つのフィールドを入力したいだけです

       var pAt = ent.Patterns.Where(p => p.Case_Id == (cbCase.SelectedItem as Case).Case_Id).Select(x => new  Pattern{  PatternID = x.PatternID, Pattern1 = x.Pattern1 });

        listBox1.DataSource = pAt;
        listBox1.ValueMember = "PatternID";
        listBox1.DisplayMember = "Pattern1";
4

2 に答える 2

1

コード部分をSQL部分から分離します。Entity Frameworkは、必ずしもコードオブジェクトを使用してSQLクエリを作成できるとは限りませんが、通常は回避できます。例えば:

var caseId = (cbCase.SelectedItem as Case).Case_Id;
var pAt = ent.Patterns.Where(p => p.Case_Id == caseId)
    .ToArray()
    .Select(x => new  Pattern { PatternID = x.PatternID, Pattern1 = x.Pattern1 });
于 2012-10-18T16:36:07.827 に答える
1

代わりにこれを試してください:

var pAt = ent.Patterns.AsEnumerable()
             .Where(p => p.Case_Id == ((Case)cbCase.SelectedItem).Case_Id)
             .Select(x => new  Pattern{  PatternID = x.PatternID, Pattern1 = x.Pattern1 });

これで問題が解決することを願っています。

于 2012-10-18T16:35:34.950 に答える