[英]Custom order list of strings
我有一個字符串列表,其中包含數據庫列名,並且具有隨機順序,其中包含隨機數量的項目。 該列表如下所示:
List<string> searchBy = new List<string>(new string[] { "LAN_Share",
"[Group]", "AccessMask", "[Server]",
"max([TimeStamp]) as [TimeStamp]" });
我還制作了另一個列表fixedList
(如下所示),該列表具有我希望searchBy
列表處於的順序。問題是我不想將缺少的元素添加到searchBy
列表中,只是對其進行排序。
List<string> fixedList = new List<string>(new string[] { "[Server]",
"LAN_Name", "LAN_Share", "[Group]", "[User]", "ID", "AccessMask",
"max([TimeStamp]) as [TimeStamp]" });
fixedList
具有所有可能的字符串和正確的順序。 一旦獲得正確的順序,就將列表轉換為數組:
string query = string.Join(",", searchBy.ToArray());
並使用以下命令查詢SQL數據庫:
SQL_Query("SELECT " + query + " FROM LANReporter")
SQL_Query是查詢數據庫的工作函數。 這可能嗎?
您只希望searchBy
-list由第二個列表排序? 然后這應該工作:
var orderColumns = searchBy.OrderBy(s =>
{
int index = fixedList.IndexOf(s);
return index == -1 ? int.MaxValue : index;
});
如果第二個列表始終包含所有列,則可以簡化為searchBy.OrderBy(s => fixedList.IndexOf(s))
。
您可以通過它們在固定列表中出現的索引對其進行排序:
searchBy = searchBy.OrderBy(s => fixedList.IndexOf(s)).ToList();
您可以使用LINQ:
var sorted = fixedList.Where (x => searchBy.Contains (x)).ToList ();
從fixed list
(已訂購)中,您可以獲得searchBy
列表中存在的項目。
當然, fixed list
必須包含所有可能的列名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.