C# 自定义字符串顺序列表

C# 自定义字符串顺序列表,c#,sorting,C#,Sorting,我有一个包含数据库列名的字符串列表,这些字符串的顺序是随机的,项目数是随机的。该列表可以如下所示: List<string> searchBy = new List<string>(new string[] { "LAN_Share", "[Group]", "AccessMask", "[Server]", "max([TimeStamp]) as [TimeStamp]" }); fixedList具有所有可能的字符串和正确的顺序。获得正确的顺序后,

我有一个包含数据库列名的字符串列表,这些字符串的顺序是随机的,项目数是随机的。该列表可以如下所示:

List<string> searchBy = new List<string>(new string[] { "LAN_Share",        
"[Group]", "AccessMask", "[Server]",
"max([TimeStamp]) as [TimeStamp]" });
fixedList
具有所有可能的字符串和正确的顺序。获得正确的顺序后,我将列表转换为数组:

string query = string.Join(",", searchBy.ToArray());
并使用以下命令查询SQL数据库:

SQL_Query("SELECT " + query + " FROM LANReporter")

其中,SQL_查询是查询数据库的工作函数。这是可能的吗?

您只想让第二个列表对
searchBy
-列表进行排序?那么这应该是可行的:

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 ();
固定列表
(已排序)中,您可以获得
searchBy
列表中存在的项目


当然,
固定列表
必须包含所有可能的列名。

显示查询本身
var sorted = fixedList.Where (x => searchBy.Contains (x)).ToList ();