Linq with a long where clause
        Posted  
        
            by Jeremy Roberts
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Jeremy Roberts
        
        
        
        Published on 2010-05-24T20:14:20Z
        Indexed on 
            2010/05/24
            20:31 UTC
        
        
        Read the original article
        Hit count: 321
        
Is there a better way to do this? I tried to loop over the partsToChange collection and build up the where clause, but it ANDs them together instead of ORing them. I also don't really want to explicitly do the equality on each item in the partsToChange list.
var partsToChange = new Dictionary<string, string> {
    {"0039", "Vendor A"},
    {"0051", "Vendor B"},
    {"0061", "Vendor C"},
    {"0080", "Vendor D"},
    {"0081", "Vendor D"},        
    {"0086", "Vendor D"},
    {"0089", "Vendor E"},
    {"0091", "Vendor F"},
    {"0163", "Vendor E"},
    {"0426", "Vendor B"},
    {"1197", "Vendor B"}
};
var items = new List<MaterialVendor>();
foreach (var x in partsToChange)
{
    var newItems = (
    from m in MaterialVendor 
    where 
        m.Material.PartNumber == x.Key 
        && m.Manufacturer.Name.Contains(x.Value)
    select m
    ).ToList();
    items.AddRange(newItems);
}
Additional info: I am working in LINQPad.
© Stack Overflow or respective owner