C# entry2.Add((string)reader.GetValue(0)); } } } query=$@“从“反馈”中选择entry3”; entry3=新列表(); 使用(var命令=新的SqlCommand(查询,连接)) { 使用(var reader=command.ExecuteReader()) { while(reader.Read()) { entry3.Add((string)reader.GetValue(0)); } } } query=$@“从“反馈”中选择entry4”; entry4=新列表(); 使用(var命令=新的SqlCommand(查询,连接)) { 使用(var reader=command.ExecuteReader()) { while(reader.Read()) { entry4.Add((string)reader.GetValue(0)); } } } 对于(int i=0;ix.Name.ToList(); 返回条目; } “我有一个名为“table”的字典,其中包含以下键“考虑到int和DateTime不是从string@JohnathanBarclay派生的,这是不可能的,键是string,我指的是我将对象值转换为的内容,您不需要对字典排序。如果这样做,那么字典就不是要使用的正确数据结构。字典是为键/值查找而设计的。是否要订购字典?或者你正在试图将字典投影到一个新的有序数据结构中?@mjwills我不“想要”字典。这些值是从SQL表中提取的,我刚刚发现字典似乎是合适的。我希望所有7个条目(id、日期、名称等)都被“链接”,无论我需要使用何种数据类型。 foreach (var key in table.Keys) { for (int i = 0; i < max; i++) { switch (key) { case "id": worksheet.Cells[i + 1, j].Value = ConversionWrapper<int>((int)table[key][i]); break; case "date": worksheet.Cells[i + 1, j].Value = ConversionWrapper<string>((DateTime)table[key][i]); break; case "name": case "entry1": case "entry2": case "entry3": case "entry4": worksheet.Cells[i + 1, j].Value = ConversionWrapper<string>((string)table[key][i]); break; default: break; } } ++j; } private static T ConversionWrapper<T>(object elem) { switch (elem) { case int: case string: return (T)elem; case DateTime: return (T)(object)((DateTime)elem).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); default: throw new ArgumentException(); } } Method to extract the values: private static Dictionary<string, List<object>> GetAllElementsLM(SqlConnection conn) { string query; string[] columns = { "id", "date", "name", "entry1", "entry2", "entry3", "entry4" }; var dic = new Dictionary<string, List<object>>(); conn.Open(); foreach (var elem in columns) { dic.Add(elem, new List<object>()); query = $@"SELECT {elem} FROM ""feedback"""; using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { dic[elem].Add(reader.GetValue(0)); } } } } conn.Close(); return dic; } readonly struct Entries { public int Id { get; } public DateTime Date { get; } public string Name { get; } public string Entry1 { get; } public string Entry2 { get; } public string Entry3 { get; } public string Entry4 { get; } public Entries(int id, DateTime date, string name, string entry1, string entry2, string entry3, string entry4) => (Id, Date, Name, Entry1, Entry2, Entry3, Entry4) = (id, date, name, entry1, entry2, entry3, entry4); } private static int GetMaxNumber(SqlConnection conn) { int i = 0; string query; conn.Open(); query = $@"SELECT id FROM ""feedback"""; using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { ++i; } } } conn.Close(); return i; } private static IEnumerable<Entries> GetAllElementsClass(SqlConnection conn) { string query; List<int> id; List<DateTime> date; List<string> name, entry1, entry2, entry3, entry4; int max = GetMaxNumber(conn); conn.Open(); query = $@"SELECT id FROM ""feedback"""; id = new List<int>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { id.Add((int)reader.GetValue(0)); } } } query = $@"SELECT date FROM ""feedback"""; date = new List<DateTime>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { date.Add((DateTime)reader.GetValue(0)); } } } query = $@"SELECT name FROM ""feedback"""; name = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { name.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry1 FROM ""feedback"""; entry1 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry1.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry2 FROM ""feedback"""; entry2 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry2.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry3 FROM ""feedback"""; entry3 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry3.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry4 FROM ""feedback"""; entry4 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry4.Add((string)reader.GetValue(0)); } } } for (int i = 0; i < max; i++) { yield return new Entries(id[i], date[i], name[i], entry1[i], entry2[i], entry3[i], entry4[i]); } conn.Close(); } private static List<Entries> SortEntries(SqlConnection conn) { var entries = new List<Entries>(); foreach (var element in GetAllElementsClass(conn)) { entries.Add(element); } entries = entries.OrderBy(x => x.Name).ToList(); return entries; }

C# entry2.Add((string)reader.GetValue(0)); } } } query=$@“从“反馈”中选择entry3”; entry3=新列表(); 使用(var命令=新的SqlCommand(查询,连接)) { 使用(var reader=command.ExecuteReader()) { while(reader.Read()) { entry3.Add((string)reader.GetValue(0)); } } } query=$@“从“反馈”中选择entry4”; entry4=新列表(); 使用(var命令=新的SqlCommand(查询,连接)) { 使用(var reader=command.ExecuteReader()) { while(reader.Read()) { entry4.Add((string)reader.GetValue(0)); } } } 对于(int i=0;ix.Name.ToList(); 返回条目; } “我有一个名为“table”的字典,其中包含以下键“考虑到int和DateTime不是从string@JohnathanBarclay派生的,这是不可能的,键是string,我指的是我将对象值转换为的内容,您不需要对字典排序。如果这样做,那么字典就不是要使用的正确数据结构。字典是为键/值查找而设计的。是否要订购字典?或者你正在试图将字典投影到一个新的有序数据结构中?@mjwills我不“想要”字典。这些值是从SQL表中提取的,我刚刚发现字典似乎是合适的。我希望所有7个条目(id、日期、名称等)都被“链接”,无论我需要使用何种数据类型。 foreach (var key in table.Keys) { for (int i = 0; i < max; i++) { switch (key) { case "id": worksheet.Cells[i + 1, j].Value = ConversionWrapper<int>((int)table[key][i]); break; case "date": worksheet.Cells[i + 1, j].Value = ConversionWrapper<string>((DateTime)table[key][i]); break; case "name": case "entry1": case "entry2": case "entry3": case "entry4": worksheet.Cells[i + 1, j].Value = ConversionWrapper<string>((string)table[key][i]); break; default: break; } } ++j; } private static T ConversionWrapper<T>(object elem) { switch (elem) { case int: case string: return (T)elem; case DateTime: return (T)(object)((DateTime)elem).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); default: throw new ArgumentException(); } } Method to extract the values: private static Dictionary<string, List<object>> GetAllElementsLM(SqlConnection conn) { string query; string[] columns = { "id", "date", "name", "entry1", "entry2", "entry3", "entry4" }; var dic = new Dictionary<string, List<object>>(); conn.Open(); foreach (var elem in columns) { dic.Add(elem, new List<object>()); query = $@"SELECT {elem} FROM ""feedback"""; using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { dic[elem].Add(reader.GetValue(0)); } } } } conn.Close(); return dic; } readonly struct Entries { public int Id { get; } public DateTime Date { get; } public string Name { get; } public string Entry1 { get; } public string Entry2 { get; } public string Entry3 { get; } public string Entry4 { get; } public Entries(int id, DateTime date, string name, string entry1, string entry2, string entry3, string entry4) => (Id, Date, Name, Entry1, Entry2, Entry3, Entry4) = (id, date, name, entry1, entry2, entry3, entry4); } private static int GetMaxNumber(SqlConnection conn) { int i = 0; string query; conn.Open(); query = $@"SELECT id FROM ""feedback"""; using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { ++i; } } } conn.Close(); return i; } private static IEnumerable<Entries> GetAllElementsClass(SqlConnection conn) { string query; List<int> id; List<DateTime> date; List<string> name, entry1, entry2, entry3, entry4; int max = GetMaxNumber(conn); conn.Open(); query = $@"SELECT id FROM ""feedback"""; id = new List<int>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { id.Add((int)reader.GetValue(0)); } } } query = $@"SELECT date FROM ""feedback"""; date = new List<DateTime>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { date.Add((DateTime)reader.GetValue(0)); } } } query = $@"SELECT name FROM ""feedback"""; name = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { name.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry1 FROM ""feedback"""; entry1 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry1.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry2 FROM ""feedback"""; entry2 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry2.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry3 FROM ""feedback"""; entry3 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry3.Add((string)reader.GetValue(0)); } } } query = $@"SELECT entry4 FROM ""feedback"""; entry4 = new List<string>(); using (var command = new SqlCommand(query, conn)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { entry4.Add((string)reader.GetValue(0)); } } } for (int i = 0; i < max; i++) { yield return new Entries(id[i], date[i], name[i], entry1[i], entry2[i], entry3[i], entry4[i]); } conn.Close(); } private static List<Entries> SortEntries(SqlConnection conn) { var entries = new List<Entries>(); foreach (var element in GetAllElementsClass(conn)) { entries.Add(element); } entries = entries.OrderBy(x => x.Name).ToList(); return entries; },c#,list,linq,sorting,dictionary,C#,List,Linq,Sorting,Dictionary,对它们进行排序: private static List<Entries> SortEntries(SqlConnection conn) { var entries = new List<Entries>(); foreach (var element in GetAllElementsClass(conn)) { entries.A

对它们进行排序:

        private static List<Entries> SortEntries(SqlConnection conn)
        {
            var entries = new List<Entries>();

            foreach (var element in GetAllElementsClass(conn))
            {
                entries.Add(element);
            }

            entries = entries.OrderBy(x => x.Name).ToList();

            return entries;
        }
private static List-SortEntries(SqlConnection-conn)
{
var entries=新列表();
foreach(GetAllegementsClass(conn)中的var元素)
{
条目。添加(元素);
}
entries=entries.OrderBy(x=>x.Name.ToList();
返回条目;
}

“我有一个名为“table”的
字典,其中包含以下键“考虑到
int
DateTime
不是从
string
@JohnathanBarclay派生的,这是不可能的,键是string,我指的是我将对象值转换为的内容,您不需要对字典排序。如果这样做,那么字典就不是要使用的正确数据结构。字典是为键/值查找而设计的。是否要订购字典?或者你正在试图将字典投影到一个新的有序数据结构中?@mjwills我不“想要”字典。这些值是从SQL表中提取的,我刚刚发现字典似乎是合适的。我希望所有7个条目(id、日期、名称等)都被“链接”,无论我需要使用何种数据类型。
           foreach (var key in table.Keys)
            {
                for (int i = 0; i < max; i++)
                {
                    switch (key)
                    {
                        case "id":
                            worksheet.Cells[i + 1, j].Value = ConversionWrapper<int>((int)table[key][i]);
                            break;
                        case "date":
                            worksheet.Cells[i + 1, j].Value = ConversionWrapper<string>((DateTime)table[key][i]);
                            break;
                        case "name":
                        case "entry1":
                        case "entry2":
                        case "entry3":
                        case "entry4":
                            worksheet.Cells[i + 1, j].Value = ConversionWrapper<string>((string)table[key][i]);
                            break;
                        default:
                            break;
                    }
                }

                ++j;
            }

       private static T ConversionWrapper<T>(object elem)
        {
            switch (elem)
            {
                case int:
                case string:
                    return (T)elem;
                case DateTime:
                    return (T)(object)((DateTime)elem).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
                default:
                    throw new ArgumentException();
            }
        }

Method to extract the values:

        private static Dictionary<string, List<object>> GetAllElementsLM(SqlConnection conn)
        {
            string query;
            string[] columns = { "id", "date", "name", "entry1", "entry2", "entry3", "entry4" };
            var dic = new Dictionary<string, List<object>>();

            conn.Open();

            foreach (var elem in columns)
            {
                dic.Add(elem, new List<object>());

                query = $@"SELECT {elem} FROM ""feedback""";

                using (var command = new SqlCommand(query, conn))
                {
                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            dic[elem].Add(reader.GetValue(0));
                        }
                    }
                }
            }

            conn.Close();

            return dic;
        }
readonly struct Entries
    {
        public int Id { get; }
        public DateTime Date { get; }
        public string Name { get; }
        public string Entry1 { get; }
        public string Entry2 { get; }
        public string Entry3 { get; }
        public string Entry4 { get; }

        public Entries(int id, DateTime date, string name, string entry1, string entry2, string entry3, string entry4) =>
                (Id, Date, Name, Entry1, Entry2, Entry3, Entry4) = (id, date, name, entry1, entry2, entry3, entry4);
    }
        private static int GetMaxNumber(SqlConnection conn)
        {
            int i = 0;
            string query;

            conn.Open();

            query = $@"SELECT id FROM ""feedback""";

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        ++i;
                    }
                }
            }

            conn.Close();

            return i;
        }
        private static IEnumerable<Entries> GetAllElementsClass(SqlConnection conn)
        {
            string query;
            List<int> id;
            List<DateTime> date;
            List<string> name, entry1, entry2, entry3, entry4;
            int max = GetMaxNumber(conn);

            conn.Open();

            query = $@"SELECT id FROM ""feedback""";

            id = new List<int>();

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        id.Add((int)reader.GetValue(0));
                    }
                }
            }

            query = $@"SELECT date FROM ""feedback""";

            date = new List<DateTime>();

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        date.Add((DateTime)reader.GetValue(0));
                    }
                }
            }

            query = $@"SELECT name FROM ""feedback""";

            name = new List<string>();

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        name.Add((string)reader.GetValue(0));
                    }
                }
            }

            query = $@"SELECT entry1 FROM ""feedback""";

            entry1 = new List<string>();

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        entry1.Add((string)reader.GetValue(0));
                    }
                }
            }

            query = $@"SELECT entry2 FROM ""feedback""";

            entry2 = new List<string>();

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        entry2.Add((string)reader.GetValue(0));
                    }
                }
            }

            query = $@"SELECT entry3 FROM ""feedback""";

            entry3 = new List<string>();

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        entry3.Add((string)reader.GetValue(0));
                    }
                }
            }

            query = $@"SELECT entry4 FROM ""feedback""";

            entry4 = new List<string>();

            using (var command = new SqlCommand(query, conn))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        entry4.Add((string)reader.GetValue(0));
                    }
                }
            }

            for (int i = 0; i < max; i++)
            {
                yield return new Entries(id[i], date[i], name[i], entry1[i], entry2[i], entry3[i], entry4[i]);
            }

            conn.Close();
        }
        private static List<Entries> SortEntries(SqlConnection conn)
        {
            var entries = new List<Entries>();

            foreach (var element in GetAllElementsClass(conn))
            {
                entries.Add(element);
            }

            entries = entries.OrderBy(x => x.Name).ToList();

            return entries;
        }