ASP .Net:Linq检查字符串数组是否包含字符串子数组

时间:2016-07-11 12:17:22

标签: c# arrays string linq

有没有办法检查一个字符串数组是否包含一个字符串子数组?数组中的元素不必与子数组中的元素完全相同,如果它不是相同的字符串,它只能包含子数组的元素作为更大数组中字符串的一部分。

例如:

  • 数组[“Ax”,“By”,“Cz”,“Dw”,“Eg”]包含子阵列[“A”,“By”,“E”]
  • Array [“Ax”]包含Subarray [“x”]
  • 数组[“Ax”,“By”]包含子阵列[“Ax”,“By”]

我需要用Linq语法编写这个,我通过表单将子数组作为输入“text”,并且我用char('')将它拆分,另一方面我将更大的数组作为字符串从数据库字段中删除char('')。

我想要做的是在客户端进行“搜索”,检查是否可以部分过滤我的数据库结果。

我通过输入文本字段从客户端浏览器获取子数据,这没关系,但我从每个从数据库获得的结果创建数组:

var auctions = from o in db.auctions select o;

我需要传递auction.productName.split('') - 这将是Array。

需要通过检查每个productName.split('')是否包含字符串[]字子阵列来过滤拍卖变量。

2 个答案:

答案 0 :(得分:2)

如果您要问的是检查:子阵列的所有项目是否包含在"父母"然后尝试这个:

subArray.All(subItem => array.Any(item => item.Contains(subItem)));

答案 1 :(得分:0)

您需要检查子数组中的所有元素是否至少具有原始数组中匹配的字符串,其中Sub的字符串是原始字符串中字符串的子集。

不区分大小写:

string[] array = new string[] { "Ax", "By", "Cz", "Dw", "Eg" };
string[] subArray = new string[] { "A", "By", "E" };

bool result =
subArray.All(sub => array.Any
        (item => item.IndexOf(sub, StringComparison.InvariantCultureIgnoreCase) >= 0));