349 Stimmen

Wie würden Sie eine "nicht in" Abfrage mit LINQ tun?

Ich habe zwei Sammlungen, die die Eigenschaft Email in beiden Sammlungen. Ich muss eine Liste der Elemente in der ersten Liste erhalten, in der Email ist in der zweiten Liste nicht vorhanden. Bei SQL würde ich einfach "not in" verwenden, aber ich kenne die Entsprechung in LINQ nicht. Wie wird das gemacht?

Bis jetzt habe ich eine Verbindung, wie...

var matches = from item1 in list1
join item2 in list2 on item1.Email equals item2.Email
select new { Email = list1.Email };

Aber ich kann nicht verbinden, da ich die Differenz brauche und die Verbindung fehlschlagen würde. Ich brauche eine Möglichkeit, Contains oder Exists ich glaube zu verwenden. Ich habe nur noch kein Beispiel gefunden, um das zu tun.

0voto

Arup Mahapatra Punkte 1
 DynamicWebsiteEntities db = new DynamicWebsiteEntities();
    var data = (from dt_sub in db.Subjects_Details
                                //Sub Query - 1
                            let sub_s_g = (from sg in db.Subjects_In_Group
                                           where sg.GroupId == groupId
                                           select sg.SubjectId)
                            //Where Cause
                            where !sub_s_g.Contains(dt_sub.Id) && dt_sub.IsLanguage == false
                            //Order By Cause
                            orderby dt_sub.Subject_Name

                            select dt_sub)
                           .AsEnumerable();

                                SelectList multiSelect = new SelectList(data, "Id", "Subject_Name", selectedValue);

    //======================================OR===========================================

    var data = (from dt_sub in db.Subjects_Details

                            //Where Cause
                            where !(from sg in db.Subjects_In_Group
                                           where sg.GroupId == groupId
                                           select sg.SubjectId).Contains(dt_sub.Id) && dt_sub.IsLanguage == false

                            //Order By Cause
                            orderby dt_sub.Subject_Name

                            select dt_sub)

                           .AsEnumerable();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X