【发布时间】:2021-09-27 06:50:24
【问题描述】:
删除具有某些特定重复属性的类列表中的元素
我将尝试用一个示例 C# 代码来解释-
有一个List<A>,其中 A 是一个类
Class A
{
Int Id{get; set;}
String name{ get; set;}
B b{get; set;} // B is a Class
}
Class B
{
Int sId{get; set;}
String detail{get; set;}
}
现在List<A> 包含一个元素列表。我必须从该列表中删除那些 Id 和 sId 曾经在列表中出现过的特定重复项。
所以它只是从列表中删除重复项,但需要这两个属性。
对此的任何帮助将不胜感激
添加更多细节以获得更好的解释
考虑一下这个代表我上面代码的 Json 数据-
A{
Id: 1
Name: Harry
b
{
sId: 1
detail: Book
},
Id: 2
Name: Harry
b
{
sId: 2
detail: Book
}
Id: 1
Name: Russel
b
{
sId: 1
detail: Biography
}
我想要的输出-
A{
Id: 1
Name: Harry
b
{
sId: 1
detail: Book
},
Id: 2
Name: Harry
b
{
sId: 2
detail: Book
}
还想告诉大家,这种基本方法运行良好-
int a;
int b;
for (int i = 0; i < A.Count; i++)
{
a = A[i].Id;
b = A[i].b.sId;
for (int j = i + 1; j < (A.Count-1); j++)
{
if ((A[j].Id == a) && (A[j].b.sId == b))
{
A.RemoveAt(j);
}
}
}
但是如果有更好的方法来做到这一点,那就太好了。也许是 Linq 或其他
需要帮助...谢谢
【问题讨论】:
-
您的示例 C# 代码,实际上不是 C# 代码,并且充满了错误。你的 json 实际上不是 json 并且充满了错误,而且你包含的 C# 格式不是很好
-
“但如果有更好的方法就好了” 你认为什么“更好”?更少的代码行?快点? ... ?如果工作人员能胜任工作,那么您到底需要什么?
-
这是退出 LinqPad 并开始自己编写它的绝佳机会,这里是包含大量示例的规范指南docs.microsoft.com/en-us/samples/dotnet/try-samples/…
-
您可以使用 Group by:stackoverflow.com/questions/489258/…