代码之家  ›  专栏  ›  技术社区  ›  Faizan S.

如果id键不一致,如何在ienumberable/iqueryable中获取下一个对象?

  •  1
  • Faizan S.  · 技术社区  · 15 年前

    在对我当前的应用程序进行了更多的黑客攻击之后——再一次,我遇到了一个问题,它杀死了一些 快乐 我期望从我的域模型。

    问题是 aggregate root /域模型中最重要的类的条目没有一致的id值。 (例如混乱: 1..3..5..12..150..157.. 等等这是因为它是一个数据库,自ms access 1997年以来一直在更新,现在升级到mssqlserver)。

    有没有办法仍然得到 real next 当前集合中的对象(这意味着它不仅仅基于其ID值)?

    在这种情况下你们建议我怎么办?

    这是个好主意吗?

    • 删除id字段并重新生成它?
    • 创建一些帮助方法以获取当前对象中的下一个对象?(你将如何做到这一点..?)
    1 回复  |  直到 15 年前
        1
  •  2
  •   tvanfosson    15 年前

    即使有缺口,身份证至少是有序的吗?如果是,只需按id排序并遍历枚举。如果需要访问筛选器中的下一个对象(例如,在其中),可以使用扩展方法来提供对集合中索引的访问。

    第1章:

     var query = db.Root.OrderBy( r => r.ID );
     foreach (var obj in query)
     {
        ....
     }
    

    第2章:

    var query = db.Root.Where( (r,i) => db.Root.ElementAt(i).Name == r.Name );
    ...