接上篇。。。。。
  • EndsWith

此方法用于测试文档对象的字符串类型的字段或者属性是否以某一个特定的字串结束

var query =

    from c in collection.AsQueryable<C>()

    where c.S.EndsWith("abc")

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.S.EndsWith("abc"));

可转化为下面mongodb查询语句(使用了正则表达式)::

{ S : /abc$/ }
  • enum 比较 (==!=<<=>>=)

枚举字段或者属性可以和同一种类型的枚举常量比较,其真正的比较是基于其底层整数的比较。

public enum E { None, A, B };

 

var query =

    from c in collection.AsQueryable<C>()

    where c.E == E.A

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.E == E.A);

可转化为下面mongodb查询语句

{ E : 1 } 

LINQ的实现需要考虑序列化后值得表示方式,所以如果你配置了映射类通过字符串而不是整数来存储枚举值,那么将产生下面的MongoDB查询语句:

{ E : "A" }
  • GetType (返回Type)

这个方法很像OfType方法,会创建一个鉴别器对结果进行更近一步筛选

var query =

    from c in collection.AsQueryable<C>()

    where c.GetType() == typeof(D)

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.GetType() == typeof(D));

可大致转化为下面mongodb查询语句(取决于你创建鉴别器的方式)

{ _t : "D" }
  • In (LINQ to MongoDB 扩展方法)

这个方法用于测试一个字段或者属性是否等于提供的一组值中的任何一个。

var query =

    from c in collection.AsQueryable<C>()

    where c.X.In(new [] { , ,  })

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c.X.In(new [] { , ,  }));

可转化为下面mongodb查询语句:

{ X : { $in : [1, 2, 3] } }
  • Inject

该方法是一个“伪方法”,用于把一个MongoDB查询注入到LINQ中,下面的查询查找大于0的64位整数。

var query =

    from c in collection.AsQueryable<C>()

    where c.X >  && Query.Type("X", BsonType.Int64).Inject()

    select c;

// or

var query =

    collection.AsQueryable<C>() .Where(c => c.X > 0 && Query.Type("X", BsonType.Int64).Inject());

可转化为下面mongodb查询语句:

{ X : { $gt : 0, $type : 18 } }
  • is C#关键字

和GetType方法一样,此处不在翻译

var query =

    from c in collection.AsQueryable<C>()

    where c is D && ((D)c).B == 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c is D && ((D)c).B == );

可大致转化为下面mongodb查询语句(取决于你创建鉴别器的方式)

{ _t : "D", B : 1 }
  • IsMatch (正则表达式方法)

这个方法用于测试字符串类型的字段或者属性是否匹配一个正则表达式。

var regex = new Regex("^abc");

var query =

    from c in collection.AsQueryable<C>()

    where regex.IsMatch(c.S)

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => regex.IsMatch(c.S));

可转化为下面mongodb查询语句:

{ S : /^abc/ }

也可以使用静态IsMatch方法:

var query =

    from c in collection.AsQueryable<C>()

    where Regex.IsMatch(c.S, "^abc")

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => Regex.IsMatch(c.S, "^abc"));

可转化为下面mongodb查询语句:

  • Length (数组集合长度)

这个方法用于测试数组集合类型的字段或者属性是否存在一个特定数量的项。

var query =

    from c in collection.AsQueryable<C>()

    where c.A.Length == 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.A.Length == );

可转化为下面mongodb查询语句:

{ A : { $size: 3 } }

  • % (Mod运算符)

这个方法用于对文档属性或者字段进行求余运算,下面查询匹配所有x属性为偶数的文档

var query =

    from c in collection.AsQueryable<C>()

    where c.X %  == 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.X %  == );

可转化为下面mongodb查询语句:

{ X : { $mod : [2, 1] } }
  • ! (Not 操作符)

此方法用于对测试结果进行逻辑非操作

var query =

    from c in collection.AsQueryable<C>()

    where !(c.X > )

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => !(c.X > ));

可转化为下面mongodb查询语句:

{ X : { $not : { $gt : 1 } } }

注意:

在c.X缺失或者不是数值类型时,!(c.X > 1)不等同于 (c.X <= 1)

数值比较 (==, !=, <, <=, >, >=)

数值类型的字段或者属性可以使用上述任何一种比较方式

var query =

    from c in collection.AsQueryable<C>()

    where c.X ==  && c.Y < 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.X ==  && c.Y < );

可转化为下面mongodb查询语句:

{ X : 0, Y : { $lt : 100 } }
  • || (Or 运算符)

逻辑或运算,进行或比较

var query =

    from c in collection.AsQueryable<C>()

    where c.X >  || c.Y > 

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.X >  || c.Y > );

可转化为下面mongodb查询语句:

{ $or : [{ X : { $gt : 0 } }, { Y : { $gt : 0 } }] }
  • StartsWith

这个方法用于测试文档对象的字符串字段或者属性是否以某个特定的子串开始

var query =

    from c in collection.AsQueryable<C>()

    where c.S.StartsWith("abc")

    select c;

// or

var query =

    collection.AsQueryable<C>()

    .Where(c => c.S.StartsWith("abc"));

可转化为下面mongodb查询语句: (可用正则表达式):

  • ToLowerToLowerInvariantToUpperToUpperInvariant这些方法用于使文档对象的字符串字段或者属性转为相应的大小写模式
    var query = from c in collection.AsQueryable<C>()

     where c.S.ToLower() == "abc"

     select c;

 // or

 var query =

     collection.AsQueryable<C>()

     .Where(c => c.S.ToLower() == "abc");

可转化为下面mongodb查询语句: (可用正则表达式):

    { S : /^abc$/i }

  

C#官方驱动LINQ查询部分结束,下篇C#官方驱动序列化文档对象待续

最新文章

  1. 解决VS2015安装Android SDK 后文件不全及更新问题
  2. Javascript到PHP加密通讯的简单实现
  3. Android中Bitmap和Drawable
  4. HDU 1198(并查集)
  5. [LeetCode] Word Ladder II
  6. C#/Java/C/C++基本类型所占大小及表示范围
  7. sql语句感想
  8. android147 360 程序锁
  9. iis7以上版本权限控制
  10. python连接mysql之pymysql模块
  11. (转)asp.net(C#)手记之Repeater与两级菜单
  12. 清空文本框SetDlgItemText(IDC_TXTXT,NULL);
  13. scrapy bug
  14. JS中的类,类的继承方法
  15. Redis 2种持久化模式的缺陷
  16. 解决页面使用ifrmae后,在session失效后登录页面在子页面中显示(子窗体出现父窗体)
  17. Educational Codeforces Round 51 (Rated for Div. 2) G. Distinctification(线段树合并 + 并查集)
  18. A New Function(LightOJ 1098)积性函数前缀和的应用
  19. IO 流小记录
  20. 如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form

热门文章

  1. Moq 和RhinoMocks
  2. Appium:通过wifi连接Android设备
  3. jQuery组织您钞四----jQuery操作DOM
  4. Hadoop学习之配置Eclipse远程调试Hadoop
  5. 安德鲁斯Selector简介
  6. ASP.NET 5+EntityFramework 7
  7. UUShutdown关机工具 - 给 Windows8.1Metro 开始屏幕添加 关机重启按钮
  8. printf详解
  9. Asterisk 未来之路3.0_0007
  10. js 模拟QQ聊天窗口图片播放效果(带滚轮缩放)