【问题标题】:using LINQ from Database to List in c#在c#中使用从数据库到列表的LINQ
【发布时间】:2011-10-20 07:18:10
【问题描述】:

我有一个如下所示的 t_my_class 表结构(MySql 表)

id     class     group     age     name     surname
1      9         A         18      sarah    brown
2      10        B         20      joe      sanders
3      8         A         17      elisa    connor
4      10        C         23      sandra   brown

我有一个结构和该结构的列表

struct MyClass
{
   int id;
   string class;
   string group;
   int age;
   string name;
   string surname;
}
List<MyClass> Students = new List<MyClass>();

现在,你能告诉我使用哪个 LINQ 查询从 t_my_class 表中选择所有数据到学生列表。

【问题讨论】:

    标签: c# mysql linq


    【解决方案1】:

    首先,这几乎肯定不是struct - 它应该是class。现在,您有几个选择;如果您确实已经连接了一个支持 LINQ 的 ORM,那么它应该很简单:

    var students = myContext.Students.ToList();
    

    如果您没有已经在使用 ORM 工具,那么 micro-ORM 可能会有所帮助,例如 dapper-dot-net 与 MySql AF​​AIK 一起使用,允许:

    var students = connection.Query<Student>("select * from t_my_class").ToList();
    

    与:

    class Student
    {
       public int Id {get;set;}
       public string Class {get;set;}
       public string Group {get;set;}
       public int Age {get;set;}
       public string Name {get;set;}
       public string Surname {get;set;}
    }
    

    【讨论】:

    • 你能详细说明为什么我们不应该使用结构吗? (纯粹感兴趣)。
    • @christofr 结构体非常少见,除非您确切地知道为什么要使用结构体,否则应该假定一个类。特别是,结构对“对象”类型的数据做出了糟糕的选择(学生是一个对象,而不是一个值)。具体原因:对于一个结构来说它太大了,可能不正确地可变,并且复制语义通常会引起巨大的麻烦。
    【解决方案2】:
    var students = from std in Students
                   select std.
    

    更多:Learn SQL to LINQ (Visual Representation)

    【讨论】:

      【解决方案3】:
      var students = from p in entities.t_my_class 
      select p;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-28
        • 2019-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多