发布日期: 2016年11月
适用于: Dynamics CRM 2015
.NET 语言集成查询 (LINQ) 中的 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 查询提供程序使用标准 LINQ 语法。 创建 LINQ 查询的第一步是确定相关实体类型和各类型之间的关系。 然后可以指定数据源及其他查询参数。
from 子句用于返回单个“根”实体。 查询提供程序只能返回单个实体类型的实体。orderby 和 select 子句必须引用此根实体。 可以使用 join 子句将具有关系的实体添加到“根”实体中。
本主题内容
LINQ 运算符
LINQ 限制
筛选多个实体
LINQ 运算符
所有 LINQ 查询表达式均具有类似格式。 下表显示了使用 Microsoft Dynamics 365 LINQ 查询提供程序时 LINQ 查询表达式中的最常用子句。
LINQ 限制
LINQ 查询提供程序支持一部分 LINQ 运算符。 并非所有可用 LINQ 表示的条件都受支持。 下表显示了基本 LINQ 运算符的一些限制。
LINQ 运算符 |
限制 |
|---|---|
join |
表示内联。 不能执行外部联接。 |
from |
每个查询支持一个 from 子句。 |
where |
该子句的左边必须是属性名称,该子句的右边必须是值。 不能将左边设置为常数。 该子句的两边均不能为常数。 支持 String 函数 Contains、StartsWith、EndsWith 和 Equals。 |
groupBy |
不支持。 FetchXML 支持 LINQ 查询提供程序不提供的分组选项。详细信息:使用 FetchXML 聚合 |
orderBy |
支持按实体属性(如 Contact.FullName)排序。 |
select |
支持匿名类型、构造函数和初始值设定项。 |
last |
不支持 last 运算符。 |
skip 和 take |
使用服务器端分页支持 skip 和 take。skip 值必须大于或等于 take 值。 |
aggregate |
不支持。 FetchXML 支持 LINQ 查询提供程序不提供的聚合选项。详细信息:使用 FetchXML 聚合 |
筛选多个实体
可以在 .NET 语言集成查询 (LINQ) 和 Microsoft Dynamics CRM 2015 中创建复杂的 Microsoft Dynamics CRM Online 查询。 可以将多个 Join 子句和筛选子句结合使用,以创建对多个实体中的属性进行筛选的结果。
以下示例演示如何创建作用于两个实体并根据每个实体返回的值筛选结果的 LINQ 查询。
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_where3 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
where a.Name.Contains("Contoso")
where c.LastName.Contains("Smith")
select new
{
account_name = a.Name,
contact_name = c.LastName
};
foreach (var c in query_where3)
{
System.Console.WriteLine("acct: " +
c.account_name +
"\t\t\t" +
"contact: " +
c.contact_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_where3 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.account_primary_contact.Id _
Where a.Name.Contains("Contoso") _
Where c.LastName.Contains("Smith") _
Select New With {Key .account_name = a.Name,
Key .contact_name = c.LastName}
For Each c In query_where3
Console.WriteLine("acct: " & c.account_name & vbTab & vbTab _
& vbTab & "contact: " & c.contact_name)
Next c
End Using
另请参阅
示例:创建 LINQ 查询
示例:复杂的 LINQ 查询
使用 LINQ(.NET 语言集成查询)构建查询
将晚期绑定实体类与 LINQ 查询结合使用
博客:Dynamics CRM 2011的LINQPad 插件
© 2017 Microsoft。 保留所有权利。 版权