Usinq Linq to select items that is in a semi-comma separated string?

后端 未结 3 1398
孤城傲影
孤城傲影 2020-12-18 08:23

I have a string with semi-comma separated names:

string names = \"Jane;Harry\";

I also have a list of customer objects:

pub         


        
3条回答
  •  梦毁少年i
    2020-12-18 08:55

    Well, you should really split the string up to start with - otherwise you'll get a match for "Jane" even if the list is "Janet;Harry".

    You could do:

    string[] validNames = names.Split(';');
    var query = customers.Where(c => validNames.Contains(c.FirstName));
    

    Another option is to use a HashSet, which will perform a lot better when the list is very large:

    HashSet validNames = new HashSet(names.Split(';'));
    var query = customers.Where(c => validNames.Contains(c.FirstName));
    

    I've used dot notation here instead of a query expression because it's simpler when you're just applying a clause or two. As a query expression though, it would be:

    var query = from c in customers
                where validNames.Contains(c.FirstName)
                select c;
    

提交回复
热议问题