DataLoadOptions.AssociateWith Método
Definição
Sobrecargas
| AssociateWith(LambdaExpression) |
Filtra os objetos recuperados para um relacionamento específico.Filters the objects retrieved for a particular relationship. |
| AssociateWith<T>(Expression<Func<T,Object>>) |
Filtra os objetos recuperados para um relacionamento específico.Filters objects retrieved for a particular relationship. |
AssociateWith(LambdaExpression)
Filtra os objetos recuperados para um relacionamento específico.Filters the objects retrieved for a particular relationship.
public:
void AssociateWith(System::Linq::Expressions::LambdaExpression ^ expression);
public void AssociateWith (System.Linq.Expressions.LambdaExpression expression);
member this.AssociateWith : System.Linq.Expressions.LambdaExpression -> unit
Public Sub AssociateWith (expression As LambdaExpression)
Parâmetros
- expression
- LambdaExpression
Identifica a consulta a ser usada em um determinado campo ou propriedade um-para-muitos.Identifies the query to be used on a particular one-to-many field or property. Observe o seguinte:Note the following:
Se a expressão não começar com um campo ou propriedade que representa uma relação um-para-muitos, uma exceção será gerada.If the expression does not start with a field or property that represents a one-to-many relationship, an exception is thrown.
Se aparecer um operador diferente de um operador válido na expressão, uma exceção será gerada.If an operator other than a valid operator appears in the expression, an exception is thrown. Os operadores válidos são os seguintes:Valid operators are as follows:
WhereWhere
OrderByOrderBy
ThenByThenBy
OrderByDescendingOrderByDescending
ThenByDescendingThenByDescending
TakeTake
Exemplos
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.AssociateWith<Customer>(c => c.Orders.Where(p => p.ShippedDate != DateTime.Today));
db.LoadOptions = dlo;
var custOrderQuery =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (Customer custObj in custOrderQuery)
{
Console.WriteLine(custObj.CustomerID);
foreach (Order ord in custObj.Orders)
{
Console.WriteLine("\t {0}",ord.OrderDate);
}
}
Dim db As New Northwnd("c:\northwnd.mdf")
Dim dlo As DataLoadOptions = New DataLoadOptions()
dlo.AssociateWith(Of Customer)(Function(c As Customer) _
c.Orders.Where(Function(p) p.ShippedDate <> DateTime.Today))
db.LoadOptions = dlo
Dim custOrderQuery = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust
For Each custObj In custOrderQuery
Console.WriteLine(custObj.CustomerID)
For Each ord In custObj.Orders
Console.WriteLine("{0}{1}", vbTab, ord.OrderDate)
Next
Next
Comentários
No exemplo a seguir, o loop interno itera somente sobre aqueles Orders que não foram enviados hoje.In the following example, the inner loop iterates only over those Orders that have not been shipped today.
Aplica-se a
AssociateWith<T>(Expression<Func<T,Object>>)
Filtra os objetos recuperados para um relacionamento específico.Filters objects retrieved for a particular relationship.
public:
generic <typename T>
void AssociateWith(System::Linq::Expressions::Expression<Func<T, System::Object ^> ^> ^ expression);
public void AssociateWith<T> (System.Linq.Expressions.Expression<Func<T,object>> expression);
member this.AssociateWith : System.Linq.Expressions.Expression<Func<'T, obj>> -> unit
Public Sub AssociateWith(Of T) (expression As Expression(Of Func(Of T, Object)))
Parâmetros de tipo
- T
O tipo é consultado.The type that is queried against.
Se o tipo não estiver mapeado, uma exceção será gerada.If the type is unmapped, an exception is thrown.
Parâmetros
- expression
- Expression<Func<T,Object>>
Identifica a consulta a ser usada em um determinado campo ou propriedade um-para-muitos.Identifies the query to be used on a particular one-to-many field or property. Observe o seguinte:Note the following:
Se a expressão não começar com um campo ou propriedade que representa uma relação um-para-muitos, uma exceção será gerada.If the expression does not start with a field or property that represents a one-to-many relationship, an exception is thrown.
Se aparecer um operador diferente de um operador válido na expressão, uma exceção será gerada.If an operator other than a valid operator appears in the expression, an exception is thrown. Os operadores válidos são os seguintes:Valid operators are as follows:
WhereWhere
OrderByOrderBy
ThenByThenBy
OrderByDescendingOrderByDescending
ThenByDescendingThenByDescending
TakeTake
Exemplos
No exemplo a seguir, o loop interno itera somente sobre aqueles Orders que não foram enviados hoje.In the following example, the inner loop iterates only over those Orders that have not been shipped today.
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
DataLoadOptions dlo = new DataLoadOptions();
dlo.AssociateWith<Customer>(c => c.Orders.Where(p => p.ShippedDate != DateTime.Today));
db.LoadOptions = dlo;
var custOrderQuery =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (Customer custObj in custOrderQuery)
{
Console.WriteLine(custObj.CustomerID);
foreach (Order ord in custObj.Orders)
{
Console.WriteLine("\t {0}",ord.OrderDate);
}
}
Dim db As New Northwnd("c:\northwnd.mdf")
Dim dlo As DataLoadOptions = New DataLoadOptions()
dlo.AssociateWith(Of Customer)(Function(c As Customer) _
c.Orders.Where(Function(p) p.ShippedDate <> DateTime.Today))
db.LoadOptions = dlo
Dim custOrderQuery = _
From cust In db.Customers _
Where cust.City = "London" _
Select cust
For Each custObj In custOrderQuery
Console.WriteLine(custObj.CustomerID)
For Each ord In custObj.Orders
Console.WriteLine("{0}{1}", vbTab, ord.OrderDate)
Next
Next
Comentários
Para obter informações sobre como evitar ciclos, consulte DataLoadOptions .For information about how to avoid cycles, see DataLoadOptions.