【问题标题】:Finding location in list,在列表中查找位置,
【发布时间】:2011-01-19 12:31:03
【问题描述】:

Linq Get items higher then lastname 中,我询问了如何让人们比某个名字更高。

但是,我们使用带有分页的数据网格,并且当只显示姓氏“Jan”以上的人时,无法回复以 AA 开头的人。

所以我正在寻找一种方法来找出如果按照正常的选择顺序,这个人会在什么位置?

希望这是有道理的:)

[编辑] 查询类型为EntityQuery。 [/编辑]

【问题讨论】:

    标签: c# silverlight linq list datagrid


    【解决方案1】:

    所以你想要符合你条件的第一人称记录索引?

    var index = query.TakeWhile(person => person.LastName.CompareTo(name) < 0).Count();
    

    这会统计匹配条件的元素个数,返回值是第一个不匹配条件的元素的索引。

    请注意,您必须否定与 Where() 一起使用的条件,因为在本例中 TakeWhile() 用于获取您不想要的项目。

    【讨论】:

    • TakeWhile 似乎在 EntityQuery 上不可用。我错过了命名空间吗?如果没有希望,您可以提供一种替代方法。
    • 我从未使用过 EntityQuery,而且它的查询操作集似乎非常有限。可以用 ToList() 将其转换为列表,然后使用 TakeWhile() 方法吗?
    • 不,将其转换为列表意味着我必须首先从数据库中获取所有记录。使用 entityQuery,我可以限制从数据库中获取的记录数量,从而限制传输的数据量。
    • 是的,我知道这是 ToList() 的问题。您仍然可以限制从数据库中获取的记录数,但只有当条件在数据集的开头运行时才有效,因为 TakeWhile() 解决方案需要所有前面的记录。
    • 我有一个数据库,里面有超过 4000 条记录。如果您的方式是工作,并且此人是“Zen”而不是“Jan”,我将首先在我的应用程序中获取“Zen”之前的所有人以找到他的位置,然后获取“Zen”之后的人“同样。这是我们希望避免的事情,因为我们希望将网络上的数据限制为尽可能少。
    【解决方案2】:

    使用给出的示例设法解决这个问题 Getting to certain member using datapager and datagrid

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多