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;
}