【发布时间】:2019-08-06 19:02:49
【问题描述】:
什么是从 C# 语言中不同大小和不同值的多个列表中过滤数据的正确且可靠的方法?
我有 5 个列表(示例):
1。 Wire1{“HC:1”、“OGB:2”、“KEL:1”、“ORG:8”、“HAS:10”}
- Wire2{“HC:1”、“OSB:1”、“KEL:1”、“ORG:1”、“HPS:5”、“ORG:12”、“HAS:25”}
- Wire3{“HC:5”、“ORB:5”、“KEL:1”、“ORG:2”、“HPS:4”、“OLG:1”}
- Wire4{“HC:4”、“OGB:2”、“KEL:1”、“ORG:1”、“HFS:5”}
- Wire5{“HC:1”、“OGB:5”、“KEL:1”、“ORG:2”、“HAS:5”、“CCC:1”、“ORC:10”、“HAS: 5"}
我需要检查电线是否有相同的连接(这些是上面示例中的列表元素)并返回它们。
public class HarnessAndHousings //List<HarnessAndHousings> Lists...
{
public int id { get; set; }
public string issue { get; set; }
public string Harness { get; set; }
public List<string> Housings { get; set; } = new List<string>();
}
public class Errors // -> List<Errors> Output;
{
public string harness { get; set; }
public string harness2 { get; set; }
public string housing { get; set; }
}
//What i did is horrible but how to do that in another way correct way?
public static void CheckErrors(List<HarnessAndHousings> harness)
{
foreach(HarnessAndHousings h in HarnessAndHousings)
{
foreach(string s in h.Housings)
{
foreach(HarnessAndHousings h2 in HarnessAndHousings)
{
List<string> matches = h2.Housings.Where(x => h2.Housings.Contains(s)).ToList();
foreach(string m in matches)
{
Errors.Add(new Errors { harness = h.Harness, harness2 = h2.Harness, housing = m });
}
Console.WriteLine(Errors.Count);
}
}
}
}
【问题讨论】:
-
我发现第一个示例和后面的代码之间没有共同点。请edit您的问题包括minimal reproducible example,并根据需要构建列表以演示您所看到的问题。
-
最后一句话说你需要做什么并不清楚。 “如果电线具有相同的连接”是什么意思?这可能意味着很多事情。您发布的代码说它正在检查错误,但我们不知道这意味着什么。它正在添加到
List<HarnessAndHousings>。没有电线。我无法建立联系(双关语。)