private Map GetMinMaxDistanceShcoolData(Map MonitorsData)
{
var tempData = MonitorsData.MonitorsDataList;
if (tempData != null)
{
foreach (var monitor in tempData)
{
foreach (var tehsil in monitor.Tehsils)
{
var ordered = tehsil.Schools.OrderBy(x => x.Distance).ToList();
var min = ordered.FirstOrDefault();
var max = ordered.LastOrDefault();
ordered.ToList().Clear();
tehsil.Schools.ToList().Add(min);
tehsil.Schools.ToList().Add(max);
}
}
}
return null;
}
清除列表之前和之后列表的计数是相同的。 即使我使用Remove()而不是Clear(),它也不会删除列表。 另外,Add(min)和Add(max)也不起作用。
答案 0 :(得分:3)
它工作得很好,你只需要拨打多个ToList
ordered是一个List,然后你调用ToList(创建一个新的List),然后你清除最后一个List(不触及第一个)。
你写的是什么:
ordered.ToList().Clear();
与
相同var newlist = ordered.ToList();
newlist.Clear(); // of course this doesn't clear ordered
您需要做的只是
ordered.Clear();
答案 1 :(得分:0)
你做错了。 ToList创建一个新列表,因此Ordered
是一个新列表,您可以清除它,但不清除原始数据。
ordered.ToList().Clear();
同样ordered
已经是一个列表,调用ToList
是多余的
我认为你打算这样做:
var ordered = tehsil.Schools.OrderBy(x => x.Distance).ToList();
var min = ordered.FirstOrDefault();
var max = ordered.LastOrDefault();
tehsil.Schools.Clear();
tehsil.Schools.Add(min);
tehsil.Schools.Add(max);
答案 2 :(得分:0)
在ToList()
Clear()
来电
var tempData = MonitorsData.MonitorsDataList;
if (tempData != null)
{
foreach (var monitor in tempData)
{
foreach (var tehsil in monitor.Tehsils)
{
var ordered = tehsil.Schools.OrderBy(x => .Distance).ToList();
var min = ordered.FirstOrDefault();
var max = ordered.LastOrDefault();
ordered.Clear();
tehsil.Schools.ToList().Add(min);
tehsil.Schools.ToList().Add(max);
}
}
}
答案 3 :(得分:0)
将ordered.ToList().Clear();
替换为ordered.Clear();
答案 4 :(得分:0)
您正在清除.ToList()
ordered.ToList().Clear();
// .ToList() - Creates a new list.
// .Clear() - Clears the list that was created.
清除列表使用:
ordered.Clear();
// .Clear() - Clears the list called ordered.
答案 5 :(得分:0)
嗨,这里有一些问题,请尝试这样的事情。
foreach (var tehsil in monitor.Tehsils)
{
var ordered = tehsil.Schools.OrderBy(x => x.Distance).ToList();
if(!ordered.Any || ordered.Count < 3) continue;
var maxmin = new List<tehsil.Schools> { ordered.FirstOrDefault(), ordered.LastOrDefault() }
tehsil.Schools = maxmin;
}