字段的最大值和最小值,从mongodb转换为c#

时间:2014-11-18 18:49:25

标签: c# mongodb max min

我有以下Mongodb脚本,但想用C#编写它们,有人可以帮我把它们翻译成C#尽可能简单。我正在使用mongodb C#驱动程序。

查找集合中字段的最大值并将其返回到变量

db.tblProduct.find().sort({"ThrowNo":1/-1}).limit(-1)

找到最小值:

db.tblProduct.find().sort({"ThrowNo":1/1}).limit(-1)

如果ThrowNo是日期时间,我将如何处理转换不同的数据类型。

谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

不确定如何翻译脚本,但

db.tblProduct.OrderBy(p => p.ThrowNo).First();

db.tblProduct.OrderByDescending(p => p.ThrowNo).First();

将返回具有最低和最高ThrowNo值的实体。

答案 1 :(得分:0)

下面的方法对给定的集合进行排序,之后您需要应用第一个函数

public ICollection<T> getSortedData(ICollection<T> collection, string property, string direction)
{
    switch (direction.Trim())
    {
      case "asc":
        collection = ((from n in collection
                       orderby
                       n.GetType().GetProperty(property).GetValue(n, null)
                       select n).ToList<T>()) as ICollection<T>;
      break;
      case "desc":
        collection = ((from n in collection
                       orderby
                       n.GetType().GetProperty(property).GetValue(n, null)
                       descending
                       select n).ToList<T>()) as ICollection<T>;
      break;
   }
  return collection;
}

var firstProduct = getSortedData(products,"ThrowNo","desc").first<Product>();

答案 2 :(得分:0)

collection.OrderBy(item => item.ThrowNo)使用Linq,它需要加载所有文档,然后在内存中设置顺序

与c#匹配的确切代码类似于:

collection.FindAll().SetSortOrder(SortBy.Ascending("ThrowNo")).SetLimit(-1);