none
ASP.NET Data Access LINQ FAQ: ความแตกต่างของ List<T> และ IQueryable<T> RRS feed

คำตอบ

  • เราคืนค่า LINQ query results เป็น List<T>  หรือ IQueryable<T>

    List<T> จะสร้าง new list ในหน่วยความจำทันที เพื่อคงข้อมูลเอาไว้
    และถ้ามีความสัมพันธ์ใดๆใน
    table ความสัมพันธ์ของข้อมูลจะเป็น null
    IQueryable<T>
    จะไม่ดึงข้อมูลออกมาจนกว่าจะมีการเรียกข้อมูลซ้ำๆกันหลายๆรอบใน data source โดยใช้ foreach, DataBind, ToList, และอื่นๆ
    และถ้ามีความสัมพันธ์ใดๆใน
    table ข้อมูลที่มีความสัมพันธ์กันจะไม่เป็น null และสามารถนำมาใช้ได้

    // Return List<T> will fail when referring to related UserInfos object.
    List<user></user> users = res.ToList<user></user>();
    var ss = users.Where<user></user>(p => p.UserInfos.ID != 3);

    // Return IQueryable<T> will be successful.
    IQueryable<user></user> users = res.AsQueryable<user></user>();
    var ss = users.Where<user></user>(p => p.UserInfos.ID != 3);
    </user><//user></user><//user></user><//user></user><//user></user><//user></user><//user>


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    • แก้ไขโดย supa_sModerator 21 พฤษภาคม 2555 7:26
    • ทำเครื่องหมายเป็นคำตอบโดย supa_sModerator 22 พฤษภาคม 2555 3:14
    21 พฤษภาคม 2555 7:25
    ผู้ดูแล