LINQ to Entities 无法识别方法 get_Item(Int32)

Sec*_*ret 3 c# entity-framework

我希望有一个人可以帮助我。我有一个相对简单的程序,它从实体查询数据并将查询绑定到,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();
}
Run Code Online (Sandbox Code Playgroud)

gun*_*171 6

您在里面写的代码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();
Run Code Online (Sandbox Code Playgroud)

现在让我们只希望 sql 引擎知道如何翻译“包含”。