现实世界的应用程序可能经常需要过滤数据,而不是简单地查询主键。 使用 LINQ 可以根据您在运行时使用的任何自定义逻辑轻松地从数据库检索数据。 所以, NCache 支持 LINQ 查询,它允许您以查询数据库的相同方式查询分布式缓存。
LINQ 是一种通用的 .NET 查询语言,可用于从数据源中搜索和过滤数据。LINQ 语法与 SQL 非常相似,但它在查询时提供了更好、更优化的查询方法。 NCache 服务器。 它提供了允许更有效的查询表达式的能力,同时满足代码编译期间的语法检查。
NCache 通过 LINQ 提供程序将 LINQ 无缝集成到缓存中查询信息。该提供程序有助于在分布式缓存上执行 LINQ 查询,同时无需修改 LINQ 对象模型即可提高应用程序的性能。
与在本地执行的标准 LINQ to Objects 不同, NCache LINQ 在整个服务器集群上并行执行查询。这种分布式执行方式确保在数据源端进行过滤,从而显著减少客户端应用程序的内存占用。
NCache 支持使用 LINQ 语言的基本查询表达式来搜索缓存数据。它们是:
IQueryable<Product> products = new NCacheQuery<Product>(cache);
IQueryable<Product> product = products.Select(p => p).Where(p => p. UnitsInStock > 10);
IQueryable<Product> products = new NCacheQuery<Product>(cache);
IQueryable<Product> product = from prod in products
where prod.UnitsInStock > 10
select prod;
| 特性 | Lambda 表达式(Fluent) | 查询表达式(声明式) |
|---|---|---|
| 语法风格 | 基于方法(链式方法) | 类似 SQL 的关键字(,来自, 协调, 选择) |
| 汇编 | 直接编译成表达式树(用于 可查询) | 编译器将其转换为 Lambda 方法调用,然后转换为表达式树。 |
| NCache 执行 | 解析为 NCache 通过 SQL NCache询问 | 解析为 NCache 通过 SQL NCache询问 |
| 最佳用例 | 更适合动态查询构建/管道化 | 更适合复杂的连接或可读性较差的“扁平”查询 |
LINQ 运算符是提供查询功能(如投影、聚合、过滤和排序)的扩展方法。 在这些运营商中, NCache 支持下面提到的那些:
IQueryable<Product> product = products.Select(prod => prod);
IQueryable<Product> product = products.Select(prod => prod).Where(prod => prod.UnitsInStock > 10);
NCache 支持带有 LINQ 查询的基本查询运算符,例如:
请参阅 LINQ 查询运算符 对于这些运算符的使用。
NCache LINQ 支持两个逻辑运算符 - AND (&&) 和 OR (||) 运算符。 这些运算符组合了两个或多个缓存搜索的限制条件。 遵循我们的 LINQ 指南 逻辑运算符 详细了解它们的用法。
NCache 支持以下聚合运算符:
以下是如何使用聚合函数搜索缓存数据并统计结果的示例:
int count = products.Select(p => p).Where(prod => prod.UnitsInStock <= 50).Count();
了解聚合运算符的用法 NCache 从我们的指南 LINQ 聚合运算符.
NCache 支持 LINQ 表达式中的多个通配符。 这些通配符运算符是:
以下是使用带有限制的通配符的示例,其中运算符在缓存中搜索特定数据集:
IQueryable<Product> product = products.Select(p => p).Where(p => p.ProductName.StartsWith("Be"));
请参阅我们的文档 LINQ 通配符运算符 了解更多。
LINQPad 是一个第三方工具,用于使用查询和 lambda 表达式交互式查询 SQL 数据库,并在没有任何 IDE 的情况下编写 C# 代码。 NCache 支持与 LINQPad 实用程序无缝集成,以提高数据分析和应用程序性能。 要在 LINQPad 中处理查询, NCache LINQ 提供程序使用 NCacheContext 类,它是 .NET 框架的 IQueryable 接口的实现。
IQueryable<Product> product = new NCacheContext<Product>("ClusteredCache");
var result = from prod in product
where prod.ProductID == 12
select prod;
result.Dump();
在 LINQPad 中运行此脚本将创建一个 LINQ 对象产品来查询 UnitsInStock 大于 50 的产品。
要了解有关如何使用 LINQPad 查询缓存数据的更多信息,请关注我们的文档 使用 LINQPad 查询缓存中的数据,并在中配置 LINQPad NCache 对于您自己,请按照中提供的步骤进行操作 为 LINQPad 配置 NCache.