How do I use LINQ Contains(string[]) instead of Contains(string)

c#, contains, linq, string

Solution

spoulson has it nearly right, but you need to create a `List<string>` from `string[]` first. Actually a `List<int>` would be better if uid is also `int`. `List<T>` supports `Contains()`. Doing `uid.ToString().Contains(string[])` would imply that the uid as a string contains all of the values of the array as a substring??? Even if you did write the extension method the sense of it would be wrong.

[EDIT]

Unless you changed it around and wrote it for `string[]` as Mitch Wheat demonstrates, then you'd just be able to skip the conversion step.

[ENDEDIT]

Here is what you want, if you don't do the extension method (unless you already have the collection of potential uids as ints -- then just use `List<int>()` instead). This uses the chained method syntax, which I think is cleaner, and does the conversion to int to ensure that the query can be used with more providers.

var uids = arrayofuids.Select(id => int.Parse(id)).ToList();

var selected = table.Where(t => uids.Contains(t.uid));

Problem

I got one big question. I got a linq query to put it simply looks like this: ``` from xx in table where xx.uid.ToString().Contains(string[]) select xx ``` The values of the `string[]` array would be numbers like (1,45,20,10,etc...) the Default for `.Contains` is `.Contains(string)`. I need it to do this instead: `.Contains(string[])`... EDIT : One user suggested writing an extension class for `string[]`. I would like to learn how, but any one willing to point me in the right direction? EDIT : The uid would also be a number. That's why it is converted to a string. Help anyone?

Original source