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 ();