簡體   English   中英

字符串的自定義訂單列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM