如何获取IOrderedQueryable中项的索引?

时间:2013-12-06 15:18:54

标签: entity-framework linq-to-entities

背景: 我正在设计一个由DbSet支持的类似列表的控件(WinForms)。主要要求是将整个列表加载到本地内存中。我在虚拟模式下使用DataGridView作为底层UI。我打算将CellValueNeeded函数实现为orderedQueryable.ElementAt(n)

问题: 我需要允许控件的使用者通过值而不是索引获取/设置当前选择的值。获取很容易 - 它与CellValueNeeded操作相同 - 但设置更难:它需要我获取给定元素的索引。没有内置的orderedQueryable.FirstIndexOf(value)操作,虽然我理论上可以使用某种orderedQueryable.SkipWhile shenanigans伪造它,其中表达式有副作用,但实际上DbSet的查询提供程序可能不支持这样做。

问题: 是否有一种有效的方法可以将特定值的索引置于IOrderedQueryable之内?怎么样?

(如果这种方法结果是站不住脚的话,我会接受有关如何重组问题以使其可解决的建议。)

旁注: 可以在列表中插入和删除元素,在这种情况下,旧索引将无效 - 这是可以接受的,因为它们永远不会暴露给消费者。消费者尝试选择实际上不在列表中的项目是错误的,实际上消费者首先从列表中获取该项目(尽管从那时起索引可能已经改变)。

0 个答案:

没有答案