C#允许过滤器具有多个值(1,2,3,4,5)

时间:2015-03-23 11:18:57

标签: c# arrays split filtering visual-studio-lightswitch

在我的例子中,Filter是一个int值。我希望用户能够输入这样的值(1,2,3,4,5,..)。我使用字符串值应用此查询,它工作得很好

if (Country != null)
{
     String[] Country_Array = Country.Split(new Char[] { ',' });
     query = from p in query where Country_Array.Contains(p.Hotel_Country) select p;
}

现在我尝试对Int过滤器执行相同的查询,但它不起作用:

if (Hotel_Number != null)
{
     String [] Hotel_Array = (Hotel_Number.ToString().Split(new Char[] { ',' }))   ;
     query = from p in query where Hotel_Array.Contains(p.Customer_No_) select p; 
     //Hotel_Array.Contains(p.Costomer_No_) select p; 
}

我在p.cutomer_no收到错误!我还尝试将其转换为:

p.Customernumber.toString().toArrayChar()

但它也无效。

任何想法如何解决?

2 个答案:

答案 0 :(得分:1)

问题是您正在将整数值与字符串数组进行比较。您需要解析值以使其起作用。

var Hotel_Array = Hotel_Number.Split(new []{','}, StringSplitOptions.RemoveEmptyEntries)
                              .Select(s => int.Parse(s))
                              .ToArray();

答案 1 :(得分:1)

我猜query.Customer_No_int。如果不进行解析,则无法对字符串进行测试。

int[] numbers = Hotel_Number.ToString()
                            .Split(',')
                            .Select(i => int.Parse(i))
                            .ToArray();

query = from p in query where numbers.Contains(p.Customer_No_)
        select p;