【发布时间】:2020-03-28 20:13:20
【问题描述】:
所以我一直在研究一个非常复杂的列表,该列表由元组字典的一部分组成。这是我的代码。
var Truth = new Dictionary<Tuple<string, string, string>, bool>
{
{new Tuple <string,string,string>("!A","!B","!C"),false },
{new Tuple <string,string,string>("!A","!B","C"),false },
{new Tuple <string,string,string>("!A","B","!C"),false },
{new Tuple <string,string,string>("!A","B","C"),false },
{new Tuple <string,string,string>("A","!B","!C"),true },
{new Tuple <string,string,string>("A","!B","C"),true },
{new Tuple <string,string,string>("A","B","!C"),true },
{new Tuple <string,string,string>("A","B","C"),true},
};
var trueKeyList = Truth.Where(kv => kv.Value).ToList();
List<string> myList = new List<string>();
Console.WriteLine("SOP is: ");
foreach (var keyValue in trueKeyList)
{
Console.Write(keyValue.Key.ToString().Trim(new Char[] { ')', '(' }));
Console.Write(" AND ");
myList.Add(keyValue.Key.Item1);
myList.Add(keyValue.Key.Item2);
myList.Add(keyValue.Key.Item3);
}
Console.WriteLine("");
List<string> lstStrIgnore = new List<string>() { "A!", "B!", "C!" };
myList = myList.Distinct().Where(x => x != lstStrIgnore).ToList();
在底部附近,您会看到我尝试删除 A B 和 C 的重复项,但不删除 A 的重复项!乙!和 C!。但是这不起作用,因为它说“操作数!= 不能应用于类型字符串和类型列表”无论如何要这样做吗?
【问题讨论】:
-
myList已经不包含来自lstStrIgnore的任何项目。如果您有不同的输入,那么var outputList = myList.Except(lstStrIgnore);就可以了。
标签: c# list linq dictionary tuples