Удалить запрос в Linq - PullRequest
       53

Удалить запрос в Linq

7 голосов
/ 27 апреля 2010

У меня есть этот простой код, но он показывает ошибку. Я не знаю, где я иду не так. Я показываю ошибку в последней строке .. "DeleteOnSubmit" linq_testDataContext db = new linq_testDataContext ();

var remove = from aremove in db.logins
         where aremove.username == userNameString && aremove.Password == pwdString
         select aremove;
db.logins.DeleteOnSubmit(remove);

Ответы [ 6 ]

4 голосов
/ 06 января 2015

вам не хватает цикла foreach для удаления всей сущности.

Используйте как показано ниже

var remove = from aremove in db.logins
     where aremove.username == userNameString && aremove.Password == pwdString
     select aremove;

и после этого

foreach (var detail in remove)
{
    db.logins.DeleteOnSubmit(detail);
}

и наконец

 try
{
    db.SubmitChanges();
}
catch (Exception e)
{
    // Provide for exceptions.
}

Надеюсь, это поможет вам.

4 голосов
/ 27 апреля 2010

DeleteOnSubmit принимает один объект. Вы передаете IEnumerable<login> ему. Вместо этого используйте DeleteAllOnSubmit или выберите один объект из полученной коллекции, например:

var remove = (from aremove in db.logins 
             where aremove.username == userNameString 
                && aremove.Password == pwdString 
             select aremove).FirstOrDefault(); 

if(remove != null)
{
    db.logins.DeleteOnSubmit(remove);
}
2 голосов
/ 27 апреля 2010

Вместо:

db.logins.DeleteOnSubmit(remove);

Звоните DeleteAllOnSubmit(), вот так:

db.logins.DeleteAllOnSubmit(remove.ToList());

Обязательно позвоните db.SubmitChanges() впоследствии. Вы также можете использовать .AsEnumerable(), либо. Если это большая операция удаления, вы можете подумать об обходе LINQ в этом случае.

0 голосов
/ 03 октября 2018

используйте этот код, его работа

var remove = (from aremove in db.logins 
             where aremove.username == userNameString 
                && aremove.Password == pwdString 
             select aremove).FirstOrDefault(); 

if(remove != null)
{
     db.logins.Remove(remove);
     db.SaveChanges();
}
0 голосов
/ 23 октября 2017

попробуйте использовать метод first (), примерно так:

var remove = 
    (from aremove in db.logins where aremove.username == userNameString 
    && aremove.Password == pwdString select aremove).first();

db.logins.DeleteOnSubmit(remove);
0 голосов
/ 26 сентября 2016

За передовой опыт

 private void DeleteCourse()
        {
            int id = Convert.ToInt32( txtSearch.Text);
            CourseDemoDataContext cdContext = new CourseDemoDataContext();
            course courseobj = cdContext.courses.Single(courses => courses.COURSE_ID == id);
            cdContext.courses.DeleteOnSubmit(courseobj);
            cdContext.SubmitChanges();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...