Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# LINQ में "not in" क्वेरी का उपयोग कैसे करें

Except ऑपरेटर आपको उस डेटा को क्वेरी करने की अनुमति देने के लिए डिज़ाइन किया गया है जो IEnumerable<T> इंटरफेस का समर्थन करता है। चूंकि सभी LINQ क्वेरी एक्सप्रेशन्स, और अधिकांश LINQ क्वेरीज, IEnumerable<T> लौटाते हैं, ये ऑपरेटर्स आपको LINQ क्वेरी के परिणामों पर सेट ऑपरेशन करने की अनुमति देने के लिए डिज़ाइन किए गए हैं।

Except ऑपरेटर एक सूची में सभी आइटम्स को दूसरी सूची में आइटम्स घटाकर दिखाता है।

उदाहरण 1: Except ऑपरेटर का उपयोग करके

class Program
{
    static void Main(string[] args)
    {
        var listA = Enumerable.Range(1, 6); // 1,2,3,4,5,6
        var listB = new List<int> { 3, 4 };
        
        var listC = listA.Except(listB); // listA में जो listB में नहीं हैं
        
        foreach (var item in listC)
        {
            Console.WriteLine(item);
        }
        Console.ReadLine();
    }
}

आउटपुट

1
2
5
6

उदाहरण 2: SQL-जैसे सिंटैक्स का उपयोग करके (Where + Any)

static void Main(string[] args)
{
    var listA = Enumerable.Range(1, 6);
    var listB = new List<int> { 3, 4 };
    
    var listC = from c in listA
                where !listB.Any(o => o == c)
                select c;
    
    foreach (var item in listC)
    {
        Console.WriteLine(item);
    }
    Console.ReadLine();
}

आउटपुट

1
2
5
6

उदाहरण 3: ऑब्जेक्ट्स के साथ (कस्टम तुलना)

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
}

static void Main()
{
    var allProducts = new List<Product>
    {
        new Product { Id = 1, Name = "Laptop" },
        new Product { Id = 2, Name = "Mouse" },
        new Product { Id = 3, Name = "Keyboard" }
    };
    
    var excludedIds = new List<int> { 2 }; // Mouse को बाहर करें
    
    // विधि 1: Except कस्टम कम्पेरर के साथ
    var result1 = allProducts
        .Where(p => !excludedIds.Contains(p.Id))
        .ToList();
    
    // विधि 2: ExceptBy (.NET 6+)
    var result2 = allProducts
        .ExceptBy(excludedIds, p => p.Id)
        .ToList();
    
    // विधि 3: जॉइन के साथ (बड़े डेटासेट के लिए कुशल)
    var result3 = allProducts
        .GroupJoin(excludedIds, p => p.Id, id => id, (p, ids) => new { p, ids })
        .Where(x => !x.ids.Any())
        .Select(x => x.p)
        .ToList();
}

Except बनाम Where !Contains

पहलूExceptWhere !Contains
पठनीयताउच्च (सेट ऑपरेशन)मध्यम
प्रदर्शन (छोटा)समानसमान
प्रदर्शन (बड़ा)O(n+m) हैश-आधारितO(n*m) बिना ऑप्टिमाइज़ेशन के
डुप्लीकेट हैंडलिंगडुप्लीकेट हटाता हैडुप्लीकेट संरक्षित करता है
कस्टम तुलनाIEqualityComparer<T>लचीला लैम्ब्डा

.NET 6+ नए मेथड्स

// ExceptBy - की सेलेक्टर द्वारा बाहर करें (अधिक कुशल)
var result = listA.ExceptBy(listB.Select(x => x.Key), x => x.Key);

// IntersectBy - की द्वारा इंटरसेक्शन
var common = listA.IntersectBy(listB.Select(x => x.Key), x => x.Key);

// UnionBy - की द्वारा यूनियन
var combined = listA.UnionBy(listB, x => x.Key);

सारांश

सरल मानों के लिए: listA.Except(listB)
ऑब्जेक्ट्स/कुंजियों के लिए (.NET 6+): listA.ExceptBy(listB, x => x.Id)
लचीली शर्तों के लिए: listA.Where(x => !listB.Contains(x.Id))
  1. साइन इन विद एप्पल का उपयोग कैसे करें: प्राइवेसी सुरक्षित रखें साइन इन विद एप्पल का उपयोग कैसे करें: प्राइवेसी सुरक्षित रखें

    ऐप्पल ने WWDC 2019 में साइन इन विद एप्पल की घोषणा की, एक सुरक्षित फीचर जिसे डेवलपर्स अपने ऐप्स में जोड़ सकते हैं ताकि लोग अपनी ऐप्पल-प्रमाणित क्रेडेंशियल्स का उपयोग करके साइन इन कर सकें। अन्य प्लेटफॉर्म से जानकारी का उपयोग करके ऐप्स में साइन इन करना नया नहीं है - आप उदाहरण के लिए अपने Google, Faceb

  1. VPN के साथ BitTorrent का उपयोग कैसे करें VPN के साथ BitTorrent का उपयोग कैसे करें

    गोपनीयता अभी बड़ा चर्चा का विषय है, खासकर जब से कुछ शक्तियां हमसे इसे छीनकर हमारा डेटा उच्चतम बोली लगाने वाले को बेचने पर आमादा लगती हैं। सबसे अच्छी बात जो हम उपभोक्ताओं के रूप में कर सकते हैं, सड़कों पर उतरकर विरोध करने के अलावा, हमारे निपटान में सरल उपकरणों का उपयोग करके अपने ट्रैक को कवर करना है।

  1. आउटलुक को अपने जीमेल खाते से निर्बाध रूप से कनेक्ट करें आउटलुक को अपने जीमेल खाते से निर्बाध रूप से कनेक्ट करें

    यदि आप कंप्यूटर का उपयोग करते हैं, तो इस बात की अच्छी संभावना है कि आपके पास Yahoo, Google, Hotmail और Outlook के लिए कई ईमेल आईडी हों। समय के साथ, आपके कई ईमेल आईडी नजरअंदाज हो जाते हैं और जिसे आप अक्सर उपयोग करते हैं उसे आउटलुक इनबॉक्स के साथ कॉन्फ़िगर करना हमेशा सर्वोत्तम होता है। यद्यपि आप किसी