比较数据库项与List <string>输入

时间:2018-12-10 00:51:38

标签: c#

这是我输入的数据

  

{测试,样品}

这是我数据库中的数据

  

{C:\ Users \ Test,D:\ DriveB \ Sample \ Test,C:\ Users \ Private \ Item \ LocationB}

我的预期输出是

  

{C:\ Users \ Test,D:\ DriveB \ Sample \ Test}

如何使用该输入获得结果?到目前为止,我已经尝试使用像这样的for循环

var Count = Input.Count;

for(var i = 0; i < Count; i++)
{
   data = data.Where(u => u.Location.Contains(Input[i])).ToList();
}

变量数据已经从数据库中提取出来,并且具有这样的格式

  • 编号
  • 名称
  • 位置
  • 文件类型

但是问题在于,当它经过第一个循环时,它会立即消除第二个输入数据。

2 个答案:

答案 0 :(得分:3)

var Count = Input.Count;

   data = data.Where(x => input.Any(y => x.Location.Contains(y))).ToList();
}

可能会起作用。 Any的使用意味着:

  

data中获取任何行,其中input中至少个条目中的一个或多个包含在Location中(即子字符串)。 / p>

答案 1 :(得分:2)

首先使用“,”分隔

var input = new List<String>() { "Test", "Sample" };
var db = @"C:\Users\Test,D:\DriveB\Sample\Test,C:\Users\Private\Item\LocationB";
var result = db.Split(',').Where(p => input.Any(c => p.Contains(c))).ToList();