2013-06-12 3 views
0
delete from detail where autoid not in (select min(autoid) from detail 
where CATEGORY<>'Accepted' 
group by ATM_Id, Date, Card ,Transit ,Ck) 
and CATEGORY<>'Accepted' 

что я пыталсяКак преобразовать SQL запрос LINQ запрос

 var Query2 = from line in 
    (from line in source let fields = line.Split(',') 
    select new { autoid = fields[0], 
      ATMID = fields[4], 
      DATE = fields[2], 
      CARDNo = fields[5], 
      TRANSIT = fields[8], 
      CheckNo = fields[9], 
      CATEGORY = fields[10], 
     }) 
     orderby line.ATMID, 
       line.DATE, 
       line.CARDNo, 
       line.TRANSIT, 
       line.CheckNo ascending 
     where line.CATEGORY != "Accepted" 
     group line by new { line.ATMID, 
          line.DATE, 
          line.CARDNo, 
          line.TRANSIT, 
          line.CheckNo } 
     into gruoped 
     where gruoped.Count() > 1 

       //select autoid = gruoped.Key; 
     select new 
     { 
        //ATMID = gruoped.Key, 
        //DATE = gruoped.Key, 
        //CARDNo = gruoped.Key, 
        //TRANSIT = gruoped.Key, 
        //CheckNo = gruoped.Key, 
        autoid = gruoped.Key, 
        //CATEGORY = gruoped.Key 
     }; 

ответ

0

Вот пример, как он должен работать проверить это

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

if(remove != null) 
{ 
    db.logins.DeleteOnSubmit(remove); 
} 

Если у вас есть какие-либо вопросы упал бесплатно спрашивать !!

+0

ok..but я не использую DataBase, моя база данных деталей, разделенных запятыми текстовый файл, от этого мне нужно удалить дубликаты строк ... Можно ли удалить дубликаты строк .. спасибо вам – DotNetShabbeer

+0

@ user2448680 Вам следует попробовать себя .. и если у вас есть проблема, задайте вопрос – Mingebag

0

Вы можете попробовать это.

var ids = (from d in detail 
where d.Category != "Accepted" 
group d by new {d.ATM_Id, d.Date, d.Card ,d.Transit ,d.Ck} into grp 
select grp.Min(x => x.autoId)); 


var toDelete = (from d in detail 
      where !ids.Contains(d.AutoId) && d.Category != "Accepted" 
      select d); 

context.DeleteOnSubmit(toDelete); 

Вы можете просто найти те, которые вы хотите, а затем заново создать новый список разделенных запятыми строк, чтобы сохранить обратно в файл.

EG:

void Main() 
{ 

    var fields = new List<Field>{ 
     new Field{Id = 1, Name = "A"}, 
     new Field{Id = 1, Name = "A"}, 
     new Field{Id = 2, Name = "B"}, 
     new Field{Id = 1, Name = "A"}, 
     new Field{Id = 3, Name = "C"}, 
     new Field{Id = 2, Name = "B"}, 
    }; 

    // Grouped 
    var grouped = (from f in fields 
       group f by new {f.Id, f.Name} into grp 
       select new Field 
       { 
         Id = grp.Select(x => x.Id).FirstOrDefault(), 
         Name = grp.Select(x => x.Name).FirstOrDefault() 
       } 
       ); 

    // Makes a list of the distinct Fields    
    var list_Of_CSV_Items = grouped.Select(x => string.Join(",", x.Id,x.Name)); 

    System.IO.File.WriteAllLines(@"C:\Where_your_folder_is.txt", list_Of_CSV_Items); 
} 

public class Field 
{ 
    public int Id {get;set;} 
    public string Name {get; set;} 
}   
+0

context.DeleteOnSubmit (toDelete); после этого утверждения, дающего некоторую ошибку. Как правило, тело запроса должно заканчиваться предложением select или group. – DotNetShabbeer

+0

sorry see edit, просто добавил d. Для этого я использовал текстовый редактор. также контекст - это ваш DataContext, поэтому замените его на любой экземпляр DataContext. – crackhaus

+0

ok..but Я не использую DataContext, моя база данных деталей представляет собой текстовый файл с разделителями-запятыми, из которого мне нужно удалить повторяющиеся строки ... возможно ли удалять дублированные строки .. спасибо вам. – DotNetShabbeer

Смежные вопросы