【问题标题】:Get a random record list Dynamics 365 c#获取随机记录列表 Dynamics 365 c#
【发布时间】:2021-11-18 12:47:47
【问题描述】:

我是 Dynamics 365 开发的新手。我有一个活动,我需要在一个实体中选择一定数量的随机记录,这就像从记录列表中抽奖一样。我将处理许多记录。如何在 C# 中最好地做到这一点?

【问题讨论】:

    标签: dynamics-crm microsoft-dynamics


    【解决方案1】:

    没有获取随机记录的内置功能,一种方法(可能不是最快的方法)是首先检索所有记录,如果您使用 C#,您可以执行 RetrieveMultiple(请记住如果记录超过 5000 条,则需要分页)仅使用 Id(因此 ColumnSet 可以为 false)。

    在您检索到 Id 后,您可以将它们放入 List 中并(随机)访问您需要的元素(以 How to access random item in list? 为例查看此链接)。

    【讨论】:

    • 非常感谢 Guido,缺点实际上是运行时。我想把一个字段作为一个越来越多的数字放在表单上。所以我可以获取创建的记录数量并随机化该字段,然后获取引用该数字的记录。对不起我的英语,我来自巴西,我还在学习新语言。
    • 您的方法也是有效的,您可以创建一个自动编号属性并使其唯一(作为备用键)。使用自动编号可能会发生一个数字不存在的情况(例如,如果一条记录被删除),但在您的逻辑上有一个重试条件,它可以实现。感谢您分享您的方法。
    • 刚刚注意到@Aron 在他的评论中给出了类似的答案,我很抱歉
    【解决方案2】:

    基于 Guido 的回答,另一个想法是获取相关记录的最小 CreatedOn 和最大 CreatedOn。然后生成该范围内的随机日期和时间(包括最小值和最大值)。 获取随机记录,查询 CreatedOn 大于随机日期的前 1 个,按 CreatedOn 排序。

    或者,如果您先计算记录,则可以在该范围内生成一个随机数,然后使用Skip(random #).Take(1) 进行 LINQ 查询。

    【讨论】:

    • 非常感谢阿伦。我没有想到createdon。我想把一个字段作为一个越来越多的数字放在表单上。所以我可以获取创建的记录数量并随机化该字段,然后获取引用该数字的记录。对不起我的英语,我来自巴西,我还在学习新语言。
    • 天啊!别客气。我喜欢你给记录编号的想法。使用开箱即用的autonumbering,您可以轻松地向实体添加一个计数器字段,然后随机选择一条记录(有一些注意事项 - 例如自动编号可能存在​​空白,您需要在现有记录上回填值) .
    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    相关资源
    最近更新 更多