Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C:检查字符串是否包含在由逗号分隔的字符串中_C#_String_Split_Contains - Fatal编程技术网

C# C:检查字符串是否包含在由逗号分隔的字符串中

C# C:检查字符串是否包含在由逗号分隔的字符串中,c#,string,split,contains,C#,String,Split,Contains,我在数据库中的表中有一列,其中字符串以1,5,10的形式存储。在我的应用程序中,我想检查此列中是否存在变量 如果我这样检查: table.column.Contains(variable) table.column.Split(',') 如果variable=0,那么我将得到true,因为10包含0,但它不正确 我知道我可以这样做: table.column.Contains(variable) table.column.Split(',') 但是如何检查table.column字符

我在数据库中的表中有一列,其中字符串以1,5,10的形式存储。在我的应用程序中,我想检查此列中是否存在变量

如果我这样检查:

table.column.Contains(variable)
table.column.Split(',') 
如果variable=0,那么我将得到true,因为10包含0,但它不正确

我知道我可以这样做:

table.column.Contains(variable)
table.column.Split(',') 
但是如何检查table.column字符串中是否有任何部分与变量相等?

假设table.column和变量都是字符串值,可以执行以下操作:

table.column.Split(',').Contains(variable)
假设table.column和variable都是字符串值,则可以执行以下操作:

table.column.Split(',').Contains(variable)

我认为您遇到的问题是,当您进行拆分时,结果将是一个字符串数组。所以技术上包含1和包含10都会命中。假设您的列表是数字,您可以进行拆分并将其转换为数字来解决此问题

var sNumbers = "9,5,10";

var numbers = sNumbers.Split(',').Select(Int32.Parse).Contains(1);

当然,只有当一切都是一个数字时,这才起作用。我认为你面临的问题是,当你进行分割时,结果将是一个字符串数组。所以技术上包含1和包含10都会命中。假设您的列表是数字,您可以进行拆分并将其转换为数字来解决此问题

var sNumbers = "9,5,10";

var numbers = sNumbers.Split(',').Select(Int32.Parse).Contains(1);

当然,这只有在一切都是数字的情况下才能起作用。老实说,真正的解决办法是不要将数据存储在那样的数据库中。相反,您需要一个包含值和一对多关系的单独表。拆分是正确的方法。听起来你的数据库模式有缺陷。我知道,但无法更改数据库模式。。。。这个模式有解决方案吗?在列数据中使用逗号是一个糟糕的设计。另外,如果这是EF,并且您希望在DB上执行查询,那么Split将不起作用。您需要测试它是否包含0,或以0开头,或以0结尾,或等于0。老实说,真正的解决办法是不要将数据存储在那样的数据库中。相反,您需要一个包含值和一对多关系的单独表。拆分是正确的方法。听起来你的数据库模式有缺陷。我知道,但无法更改数据库模式。。。。这个模式有解决方案吗?在列数据中使用逗号是一个糟糕的设计。另外,如果这是EF,并且您希望在DB上执行查询,那么Split将不起作用。您需要测试它是否包含0,或以0开头,或以0结尾,或等于0。这是最好的方法。正则表达式是可能的,但不太清晰。这是最好的方法。正则表达式是可能的,但不太清晰。OP没有指定字符串中的所有内容都必须是INT。您不需要ToList来执行Contains。@MaxwellBurnham我知道这就是我在底部添加注释的原因。但它们似乎是int。OP没有指定字符串中的所有内容都必须是int。您不需要ToList来执行Contains命令。@MaxwellBurnham我知道这就是我在底部添加注释的原因。但它们似乎是int。