梅花西飞博客

使用Linq筛选满足数组条件的List集合

使用Linq从List中删选出满足指定条件的元素,其中条件为:给定任意数组(string、与List元素同维数),只要List中的元素包含数组中给定元素,则认为此List的元素符合条件。

几周前在做项目的时候,需要实现一个功能:利用“长*宽*高”的这种形式搜索数据。需要达到的效果就是输入“num1*num2*num3”,其中num1、num2、num3的组合不确定,简单来说就是“num1*num2*num3”需要匹配“长*宽*高”、“长*高*宽”、“宽*长*高”,……,等6种组合。

案例

 List<Size> strList = new List<Size>();
 strList.Add(new Size { L = "225.00", W = "170.00", T = "38.00" });
 strList.Add(new Size { L = "505.00", W = "158.00", T = "162.00" });
 strList.Add(new Size { L = "480.00", W = "340.00", T = "130.00" });
 strList.Add(new Size { L = "163.00", W = "3.00", T = "406.00" });
 strList.Add(new Size { L = "54.00", W = "23.00", T = "41.00" });

情景一

用来比较的数组:

 {"1","3","4"} or {"1","4","3"} or {"3","1","4"} or {"3","4","1"} or {"4","1","3"} or {"4","3","1"}

  使用方法比较后,结果为:

[{"163.00""3.00","406.00"},{"480.00","340.00","130.00"}]

情景二

用来比较的数组:

 {"1","","4"} or  {"4","","1"} or  {"","1","4"} or  {"","4","1"} or  {"1","4",""} or  {"4","1",""}

  使用方法比较后,结果为:

[{"163.00""3.00","406.00"},{"480.00","340.00","130.00"}]

情景三

用来比较的数组:

 {"1","",""} or  {"","1",""} or  {"","","1"} 

  使用方法比较后,结果为:

[{"225.00","170.00","38.00},{"505.00","158.00","162.00"},
 {"163.00""3.00","406.00"},{"480.00","340.00","130.00"}]

Class Is

public class Size
{
  public string L { get; set; }
  public string W { get; set; }
  public string T { get; set; }
}

Github地址传送门 使用Linq筛选满足数组条件的List集合