[英]C# Sorting List based on a condition
我想根據往返模式對清單進行排序
public class Group
{
public string From {get;set;}
public string To { get; set; }
}
我有一個從數據庫填充的組列表,但未按順序填充
List<Group> myGroup = new List<Group>();
我的群組包含以下項目:
Fr To 534-527 111-534 527-535 534-111 527-534
應該按以下順序重新安排
527-534 534-111 111-534 534-527 527-535
public List<Group> SortRepHistoryList(List<Group> group)
{
LinkedList<Group> sortedList = new LinkedList<Group>();
var tempFrom = group.Select(t => t.From).ToList();
Group lastItem = group.FirstOrDefault(g => !tempFrom.Contain(g.To));
sortedList.AddLast(lastItem);
group.Remove(lastItem);
while (group.Any())
{
var prev = group.Where(g => g.To.Equals(lastItem.From));
if (null == prev)
{
return sortedList.ToList();
}
else if (prev.Count() == 1)
{
sortedList.AddFirst(prev.First());
lastItem = prev.First();
group.Remove(lastItem);
}
else if (prev.Count() > 1)
{
}
}
return sortedList.ToList();
}
這表示從一個代碼到另一個代碼的更改歷史記錄的數據,例如,初始代碼是527,它在一個實例上被修改為534,再次將534修改為111,再次將111修改為534,再次將534修改為527,再次527修改為535,所以這里的最新代碼是535,最舊的值是527(請記住,這里不會有任何重復項)
有辦法解決嗎?
您描述的問題可以表述為通過循環訪問有向圖中的所有節點。 不是嗯...排序。
因此,假設該節點具有與之關聯的數字。 從一個節點到另一個節點有一條邊緣。 輸出按訪問順序排列的訪問邊緣列表。
您可能會對此鏈接感興趣: https : //en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.