我希望有人可以帮助我。我有一个相对简单的程序,它查询来自实体的数据并将查询绑定到dataGridView1
,但我得到了以下错误,我试图在没有进展的情况下解决超过30分钟。
System.NotSupportedException:'LINQ to Entities无法识别方法'System.Windows.Forms.DataGridViewCell get_Item(Int32)'方法,并且此方法无法转换为商店表达式。'
using (var context = new myContext())
{
var query = context.mySoftWare
.Where(s => s.Software.Contains(dataGridView2.SelectedRows[0].Cells[0].Value.ToString()))
.Select(r => new {r.SID, r.Software,r.Vendor,r.Version });
dataGridView1.DataSource = query.ToList();
}
答案 0 :(得分:2)
您在Where
中编写的代码已翻译到SQL。执行此操作的引擎并不知道如何将dataGridView2.SelectedRows[0].Cells[0].Value.ToString()
转换为SQL。
解决这个问题的简单方法是使该值成为自己的变量
var value = dataGridView2.SelectedRows[0].Cells[0].Value.ToString();
var query = context.mySoftWare
.Where(s => s.Software.Contains(value))
.Select(r => new { r.SID, r.Software, r.Vendor, r.Version });
dataGridView1.DataSource = query.ToList();
现在让我们只希望sql引擎知道如何翻译"包含"。