Linq在对象初始值设定项

时间:2016-12-20 15:18:40

标签: c# linq collections object-initializers

今天我遇到了一个非常奇怪的行为。使用Linq查询和对象初始化程序创建一个对象,其设置属性为 List< string> 后,键入原始集合,该对象包含的集合具有不同的条目顺序。

public class PrintHeaderModel
{
    public List<string> Ships { get; set; }
}

...

var shipsList = new List<string>() { /* some items */ };

var model = (from inv in db.invoices
                         where inv.ListID == id && inv.RealmID == realmId
                         select new PrintHeaderModel()
                         {
                             Ships = shipsList,
                         }).FirstOrDefault();

之后 model.Ships shipsList 中的条目顺序不同

注意:

  1. db 是DbContext实例(我使用的是Entity Framework和MySQL数据库)
  2. shipsList在填充后未进行排序
  3. 如果我创建没有Linq的模型对象(仅使用“ new ”),则条目的顺序在模型和列表中相同
  4. 如果我在创建模型后立即重新分配model.Ships,则命令正确:

    model.Ships = shipsList; // after that the order of entries is correct
    
  5. model.Ships 中的条目顺序始终不同。它随机更改,无需更改代码或数据库

  6. 我哪里错了?

0 个答案:

没有答案