3 回答
TA贡献1865条经验 获得超7个赞
您可以获得重复项的列表,如下所示:
var myList = uData.GroupBy(l => l.Ouput) .SelectMany(g => g.GroupBy(x => x.Input).Where(x => x.Count() > 1)) .SelectMany(x => x);
按输出分组以获得一系列相关项目
Output
用于
SelectMany
扁平化按输入分组的结果,其中有重复项用于
SelectMany
展平为单个IEnumerable<Data>
否则,如果您只想知道是否有基于上述标准的重复项,那么您可以使用Any
var anyDuplicates = uData.GroupBy(l => l.Ouput) .Any(g => g.GroupBy(x => x.Input).Any(x => x.Count() > 1));
TA贡献1773条经验 获得超3个赞
如果我正确理解您的问题,您不想搜索特定输出,而是查找所有重复的输出和输入值。您可以通过对组合进行分组并过滤具有多个条目的组来做到这一点:
var duplicates = uData.GroupBy(d=>new{d.Input,d.Output}).Where(g=>g.Count() > 1)
对于您的示例,上面返回(可枚举)一个组,其键为 {Output: "Output1", Input: "7,8}。(该组本身包含具有该组合的所有元素)
TA贡献1848条经验 获得超6个赞
您可以使用查找,这将创建一个对象,您可以使用您指定的键进行迭代:
public class Program
{
public static void Main(string[] args)
{
List<data> myList = new List<data>();
myList.Add(new data("output1", "1,5"));
myList.Add(new data("output2", "1,6"));
myList.Add(new data("output1", "1,5"));
myList.Add(new data("output1", "2,0"));
ILookup<string, string> myLookup = myList.ToLookup(d => d.output, d => d.input);
foreach (IGrouping<string, string> items in myLookup)
{
Console.WriteLine("Output : " + items.Key);
foreach (string input in items)
{
Console.WriteLine("-- Input value is " + input);
}
}
}
}
public class data
{
public string output;
public string input;
public data(string output, string input)
{
this.output = output;
this.input = input;
}
}
输出将如下所示:
输出 : output1
-- 输入值为 1,5
-- 输入值为 1,5
-- 输入值为 2,0
输出 : output2
-- 输入值为 1,6
然后您可以检查任何两个输入值是否相同。
- 3 回答
- 0 关注
- 264 浏览
添加回答
举报