4

I think I am putting my question correctly :)

I am querying the database using LINQ to retrieve some data. Please find the code below.

var leadtasktype = _context.LeadTypeTaskTypes.Where(l => l.LeadTypeId == item.Value);

foreach(LeadTypeTaskType l in leadtasktype){
    if (l.TaskTypeId == 21)
    {
        //I need to remove an item which has the tasktype id 21
    }
}

As I mentioned in the comments, I need to remove items from the leadtasktype based on my if condition. How do I do this?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Joshua
  • 2,275
  • 7
  • 41
  • 57

7 Answers7

5

This would seem very like another filter condition:

var leadtasktype = _context.LeadTypeTaskTypes
    .Where(l => l.LeadTypeId == item.Value)
    .Where(l => l.TaskTypeId != 21); // Exclude ID = 21.
Paul Turner
  • 38,949
  • 15
  • 102
  • 166
3

Just leave them out of your set:

var leadtasktype = _context.LeadTypeTaskTypes
    .Where(l => 
        l.leadTypeId != 21 && 
        l.LeadTypeId == item.Value
    );
Alex
  • 23,004
  • 4
  • 39
  • 73
  • It's also worth pointing out that for LINQ to Objects this approach is slightly faster than chaining `.Where()` methods, since less iterators are going to be used. For LINQ to SQL on the other hand, the same SQL code should be generated so it makes no real difference apart from style and readability (I myself like chaining better). – Alex Nov 09 '12 at 07:49
3
var leadtasktype = _context.LeadTypeTaskTypes.Where(l => l.LeadTypeId == item.Value && l.LeadTypeId != 21);
Alex Kovanev
  • 1,858
  • 1
  • 16
  • 29
2
var leadtasktype = _context.LeadTypeTaskTypes
    .Where(l => l.LeadTypeId == item.Value 
                && l.TaskTypeId != 21); // Exclude ID = 21.
Lukas Winzenried
  • 1,919
  • 1
  • 14
  • 22
2

Is it this what you want ?

var leadtasktype = _context.LeadTypeTaskTypes.RemoveAll
   (l => l.LeadTypeId == item.Value && l.LeadTypeId == 21);
m4ngl3r
  • 552
  • 2
  • 17
1
var leadtasktype = _context.LeadTypeTaskTypes.Where(l => l.LeadTypeId == item.Value);

var newData = leadtasktype;

                foreach(LeadTypeTaskType l in leadtasktype){
                    if (l.TaskTypeId == 21)
                    {
                        newData.Remove(l);
                    }
                }
m4ngl3r
  • 552
  • 2
  • 17
1
var leadtasktype = _context.LeadTypeTaskTypes.Where(l => l.LeadTypeId == item.Value);

for (var i = 0; i < leadtasktype.Count; i++)
{
  if (leadtasktype[i].TaskTypeId == 21)
  {
    leadtasktype.RemoveAt(i);
  }
}
Sani Huttunen
  • 23,620
  • 6
  • 72
  • 79