OriginalGriff
Попробуйте сначала выполнить преобразование:
int id = Convert.ToInt32(txtboxId);
demo db = (from c in ob.demoes
where c.id == id
select c).FirstOrDefault();
db.name = txtboxName.Text;
db.salary = int.Parse(txtboxSalary.Text);
ob.SaveChanges();
Но в этом нет необходимости. Конечно, он прекрасно работает в обычном Linq:
int id = 66;
string sid = "66";
List<MyClass> list = new List<MyClass>();
MyClass mc = new MyClass();
mc.id = 55;
list.Add(mc);
mc = new MyClass();
mc.id = 66;
list.Add(mc);
var x = (from c in list
where c.id == id
select c).FirstOrDefault();
var y = (from c in list
where c.id == Convert.ToInt32(sid)
select c).FirstOrDefault();
Компилируется и работает нормально, а x и y содержат один и тот же экземпляр.
Richard Deeming
"Обычный LINQ" - он же LINQ to Objects-не должен переводить запрос на другой язык. LINQ to Entities делает это, и в результате он поддерживает только ограниченное число методов и создает исключение для любого, который он не распознает. :)
OriginalGriff
Я думал, что это должно быть что - то вроде этого-вот почему я предложил сначала преобразовать его. А также "Так, наверное, эффективнее": смех: