C# 将集合转换为列表并转换为 1d dapper ORM
C# converting collections to lists and into 1d dapper ORM
寻求一些建议和解释。
我正在使用 Micro-ORM Dapper 从 SQLite 中取出 table 并用它来做一些事情。
绑定:
public static List<Airport> LoadAirports()
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
var output = cnn.Query<Airport>("select * from Airport", new DynamicParameters());
return output.ToList();
}
}
Class:
class Airport
{
public int Id { get; set; }
public string Name { get; set; }
public string LocationName { get; set; }
public string IATA { get; set; }
public string PortType { get; set; }
public string PortOwner { get; set; }
public string MotherPort { get; set; }
public bool Active { get; set; }
public bool IsApplyMeetAndGreet { get; set; }
public decimal MeetAndGreet { get; set; }
}
主要:
private void LoadAirportsList()
{
Airports = SqliteDataAccess.LoadAirports();
}
这会创建一个变量 "Airports",我认为它是数组的集合。我的问题是我似乎永远无法从它们中提取任何特定信息。
例如,我想获取列表中每个机场的名称我似乎只能 return 整个集合,我一直在读入多维数组并展平二维数组,但我总是出错关于函数不能对其进行迭代的类型。
我会尝试
for (int i = 0; i < Airports.Count; i++)
{
Assigner = Airports[i];
}
目的是遍历所有机场,然后将每个 .Name 分配给一个列表变量。叹息至今无果。感谢任何人可以提供的任何帮助。
所以在@Chetan Ranpariya 的指导下,最终弄明白了。
var PortNames = Airports.Select(airport => airport.Name);
解决了对象列表中特定元素的初始获取。
最初我认为您可以在此阶段迭代 PortNames 变量,但它仍然被视为一种方法,您不能对方法进行操作。
所以:List<string> PortNameList = PortNames.ToList();
即使集合输出为列表,它也是一个对象列表,所以一旦您解析了元素,您就可以将其设为字符串列表。然后你可以使用 for (int i = 0; i < PortNameList.Count; i++)
对这些单独的字符串值进行任何你需要的操作,在我的例子中,我使用循环将它们添加到组合框。
如果我对这些有任何误解,请告诉我。
寻求一些建议和解释。
我正在使用 Micro-ORM Dapper 从 SQLite 中取出 table 并用它来做一些事情。
绑定:
public static List<Airport> LoadAirports()
{
using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
{
var output = cnn.Query<Airport>("select * from Airport", new DynamicParameters());
return output.ToList();
}
}
Class:
class Airport
{
public int Id { get; set; }
public string Name { get; set; }
public string LocationName { get; set; }
public string IATA { get; set; }
public string PortType { get; set; }
public string PortOwner { get; set; }
public string MotherPort { get; set; }
public bool Active { get; set; }
public bool IsApplyMeetAndGreet { get; set; }
public decimal MeetAndGreet { get; set; }
}
主要:
private void LoadAirportsList()
{
Airports = SqliteDataAccess.LoadAirports();
}
这会创建一个变量 "Airports",我认为它是数组的集合。我的问题是我似乎永远无法从它们中提取任何特定信息。
例如,我想获取列表中每个机场的名称我似乎只能 return 整个集合,我一直在读入多维数组并展平二维数组,但我总是出错关于函数不能对其进行迭代的类型。
我会尝试
for (int i = 0; i < Airports.Count; i++)
{
Assigner = Airports[i];
}
目的是遍历所有机场,然后将每个 .Name 分配给一个列表变量。叹息至今无果。感谢任何人可以提供的任何帮助。
所以在@Chetan Ranpariya 的指导下,最终弄明白了。
var PortNames = Airports.Select(airport => airport.Name);
解决了对象列表中特定元素的初始获取。
最初我认为您可以在此阶段迭代 PortNames 变量,但它仍然被视为一种方法,您不能对方法进行操作。
所以:List<string> PortNameList = PortNames.ToList();
即使集合输出为列表,它也是一个对象列表,所以一旦您解析了元素,您就可以将其设为字符串列表。然后你可以使用 for (int i = 0; i < PortNameList.Count; i++)
对这些单独的字符串值进行任何你需要的操作,在我的例子中,我使用循环将它们添加到组合框。
如果我对这些有任何误解,请告诉我。