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++) 对这些单独的字符串值进行任何你需要的操作,在我的例子中,我使用循环将它们添加到组合框。

如果我对这些有任何误解,请告诉我。