0

我有一个列表框,我试图通过实体框架 linq/lambda 查询填充 SQL Server 查询的结果。我正在使用组合框中的值来提供查询。我不断收到如下错误:无法创建类型为“System.Object”的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。

对于如何解决这个问题,有任何的建议吗?我只想在网格中填充两个字段

       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

试试这个:

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 回答
1

将代码部分与 SQL 部分分开。实体框架不一定可以使用代码对象构造 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 回答