我想使用LINQ来提取与类属性字符串和准备列表中的字符串匹配的字符串



先决条件

  • 名为AAA的类具有名为BBB的字符串类型属性
  • BBB包含一个字符串;1,5,6,12">
  • 还有另一个int类型列表,称为CCC(例如[1,2,4,7,9,12,15](

想要实现

我想使用LINQ从C#中的DbSet中获得一个与BBB和CCC中至少一个匹配的AAA列表。

示例

AAA1 → AAA1.BBB = "1,2,3"
AAA2 → AAA2.BBB = "4,5,6"
AAA3 → AAA3.BBB = "7,8,9"
CCC = [1,3,4]

在这种情况下,我想要AAA1和AAA2的列表!!!

非常感谢您的帮助。

免责声明:如果它们总是INT,并且用"该解决方案将适用于

public class StringNumber
{
public string Numbers { get; set; }
}
public static void Main()
{
var a = new StringNumber { Numbers = "1,2,3" };
var b = new StringNumber { Numbers = "4,5,6" };
var c = new StringNumber { Numbers = "7,8,9" };
List<StringNumber> stringNumbers = new List<StringNumber>() { a, b, c };
List<int> numbers = new List<int>() { 10 };
//ToList is needed unless you want it to actually remove from the stringNumbers!
var result = GetAllListsWithNumber(numbers, stringNumbers.ToList());
}
public static List<StringNumber> GetAllListsWithNumber(List<int> numbers, List<StringNumber> stringNumbers)
{
stringNumbers.RemoveAll(x => !x.Numbers
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(number => Convert.ToInt32(number))
.Any(number => numbers.Contains(number)));
return stringNumbers;
}

最新更新