C# 将嵌套for循环转换为带条件的linq
如何将下面的c#嵌套for循环转换为linqC# 将嵌套for循环转换为带条件的linq,c#,.net,linq,C#,.net,Linq,如何将下面的c#嵌套for循环转换为linq list = objBLForms.GetForms(Ids); for (int i = 0; i < list.Count; i++) { for (int j = 0; j < list.Count; j++) { if (list[i].StateId == list[j].St
list = objBLForms.GetForms(Ids);
for (int i = 0; i < list.Count; i++)
{
for (int j = 0; j < list.Count; j++)
{
if (list[i].StateId == list[j].StateId &&
list[i].PayerId == list[j].PayerId && i != j)
{
if (string.IsNullOrEmpty(list[i].Tax))
{
list.Remove(list[i]);
}
else
{
list.Remove(list[j]);
}
}
}
}
list=objBLForms.GetForms(id);
for(int i=0;i
我想删除同一州的重复纳税人。如果存在任何州税,我想删除另一个重复纳税人,即;没有州税的复制品。。。
我已经通过使用嵌套for循环实现了它,如上图所示。
在林肯有什么办法吗我对林肯一无所知。
我对linq非常陌生,提前感谢您的代码逻辑实际上删除了所有包含
字符串的内容。IsNullOrEmpty(Tax)
,并且只保留第一条在Tax
中有值的记录。那么,这个怎么样
list
.Where(l => !string.IsNullOrEmpty(l.Tax))
.GroupBy(l => new {l.StateId, l.PayerId})
.Select(group => group.First())
.ToArray();
这对我来说似乎是对的:
list =
list
.OrderByDescending(x => x.Tax)
.GroupBy(x => new { x.StateId, x.PayerId })
.SelectMany(x => x.Take(1))
.ToList();
请注意,
&&i!=不需要j
:只需从1开始,而不是从0开始。是的,@john..这是个好主意!两个for循环都从0开始,都在Count
结束。您必须将一个对象与其自身进行比较Yes@ahmmed。。我想删除重复项,所以我需要将其与自身进行比较…它删除每个税项为空的项目…但仅当存在其他税项重复项时删除空税项,否则将该空税项保留在列表中