【问题标题】:Read data on specific condition using Entity Framework使用实体框架读取特定条件下的数据
【发布时间】:2017-06-18 08:31:40
【问题描述】:

您好,我正在使用带有 Entity Framework 5.0 的 Visual Studio 2015。

我在表格中有一些数据,如下所示:

1

2

3

4

5

我想读取 1 并与 2,3,4,5 进行比较 再次读取相同但这次读取 2 并与 3,4,5 进行比较 现在再次阅读,但这次阅读 3 并与 4,5 进行比较 现在再次读取,但这次读取 4 并与 5 进行比较。

是否有任何公式可以读取,例如读取 1 之后的所有数据,然后再次读取 2 之后的数据,例如 3、4、5 并在数据 3 读取 4、5 之后读取等等......

【问题讨论】:

标签: entity-framework select except


【解决方案1】:

没有提及数据量或您是否有顺序标识符,所以我只是假设一些东西。

如果您需要对所有数据进行比较.. 一个简单的方法就是对数据进行排序并循环遍历它。

var entities = dbContext.Entity.OrderBy(e => e.Id).ToList();

foreach (var currentEntity in entities)
{
    // all other records except current...
    var allRecords = dbContext.Entity.Where(e => e.Id > currentEntity.Id).ToList();

    // do your compare stuff...
}

由于数据已经排序,foreach 会负责为您获取下一个数据。但是,如果您没有顺序 ID,您仍然可以应用相同的代码,但只需在另一个对您有意义的字段中应用排序。例如按日期。

或者,如果您想进行“一次性”比较,也就是说,您收到一个 Id 并想与其他人进行比较,那么您当然不需要 foreach。只需按 id 排序并使用内部查询或使用 Skip(如@Mohamed 建议的那样)。

【讨论】:

    【解决方案2】:

    假设您有要比较的行的id,在下面的示例中,为图 (5) 进行了硬编码,您可以执行以下操作:

    var subData = data.Skip(data.Count(x => x.Id <= 5)).ToList();
    

    此代码将为您提供一个记录列表,其中包含 Id = 5 行之后的所有数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2021-04-13
      相关资源
      最近更新 更多