LINQ 쿼리 예제
게시 날짜: 2017년 1월
적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
이 항목에는 많은 LINQ 쿼리 샘플이 들어 있습니다. 전체 샘플은 샘플: 복합 LINQ 쿼리를 참조하십시오.
이 항목의 내용
간단한 Where 절
조인 및 간단한 Where 절
Distinct 연산자 사용
간단한 내부 조인
셀프 조인
이중 및 다중 조인
엔터티 필드를 사용하여 조인
런타임에 바인딩 왼쪽 조인
Equals 연산자 사용
Not Equals 연산자 사용
Where 절로 메서드 기반 LINQ 쿼리 사용
Greater Than 연산자 사용
Greater Than or Equals 및 Less Than or Equals 연산자 사용
Contains 연산자 사용
Does Not Contain 연산자 사용
StartsWith 및 EndsWith 연산자 사용
And 및 Or 연산자 사용
OrderBy 연산자 사용
First 및 Single 연산자 사용
서식이 지정된 값 검색
페이징 없이 Skip 및 Take 연산자 사용
FirstOrDefault 및 SingleOrDefault 연산자 사용
연결된 엔터티에 조건이 있는 셀프 조인 사용
Where 절에 변환 사용
페이징 정렬 사용
1:N 관계에 대해 관련 엔터티 열 검색
.Value를 사용하여 특성 값 검색
여러 예측, 새로운 데이터 유형을 다른 유형으로 캐스팅
GetAttributeValue 메서드 사용
Math 메서드 사용
Multiple Select 및 Where 절 사용
SelectMany 사용
String 연산 사용
Where 절 두 개 사용
LoadProperty를 사용하여 관련 레코드 검색
간단한 Where 절
다음 샘플에서는 Name에 "Contoso"가 포함된 거래처 목록을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_where1 = from a in svcContext.AccountSet
where a.Name.Contains("Contoso")
select a;
foreach (var a in query_where1)
{
System.Console.WriteLine(a.Name + " " + a.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_where1 = From c In svcContext.AccountSet _
Where c.Name.Contains("Contoso") _
Select c
For Each c In query_where1
Console.WriteLine(c.Name & " " & c.Address1_City)
Next c
End Using
다음 샘플에서는 Name에 "Contoso"가 들어 있고 Address1_City가 “Redmond”인 거래처 목록을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_where2 = from a in svcContext.AccountSet
where a.Name.Contains("Contoso")
where a.Address1_City == "Redmond"
select a;
foreach (var a in query_where2)
{
System.Console.WriteLine(a.Name + " " + a.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_where2 = From c In svcContext.AccountSet _
Where c.Name.Contains("Contoso") _
Where c.Address1_City.Equals("Redmond") _
Select c
For Each c In query_where2
Console.WriteLine(c.Name & " " & c.Address1_City)
Next c
End Using
조인 및 간단한 Where 절
다음 샘플에서는 거래처 Name에 “Contoso”가 들어 있고 연락처 LastName에는 “Smith”가 들어 있으며 연락처가 계정의 기본 연락처인 계정 Name과 연락처 LastName을 검색하는 방법을 보여 줍니다.
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
Distinct 연산자 사용
다음 샘플에서는 연락처 성의 고유한 목록을 검색하는 방법을 보여 줍니다. 중복 항목이 있을 수 있지만 각 이름은 한 번만 나열됩니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_distinct = (from c in svcContext.ContactSet
select c.LastName).Distinct();
foreach (var c in query_distinct)
{
System.Console.WriteLine(c);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_distinct = ( _
From c In svcContext.ContactSet _
Select c.LastName).Distinct()
For Each c In query_distinct
Console.WriteLine(c)
Next c
End Using
간단한 내부 조인
다음 샘플에서는 거래처 및 거래처에 대해 기본 연락처로 나열된 연락처 정보를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join1 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
select new
{
c.FullName,
c.Address1_City,
a.Name,
a.Address1_Name
};
foreach (var c in query_join1)
{
System.Console.WriteLine("acct: " +
c.Name +
"\t\t\t" +
"contact: " +
c.FullName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join1 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.account_primary_contact.Id _
Select New With {Key c.FullName, Key c.Address1_City,
Key a.Name, Key a.Address1_Name}
For Each c In query_join1
Console.WriteLine("acct: " & c.Name & vbTab & vbTab _
& vbTab & "contact: " & c.FullName)
Next c
End Using
셀프 조인
다음 샘플에서는 거래처가 거래처에 대한 상위 거래처인 거래처에 대한 정보를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join5 = from a in svcContext.AccountSet
join a2 in svcContext.AccountSet
on a.ParentAccountId.Id equals a2.AccountId
select new
{
account_name = a.Name,
account_city = a.Address1_City
};
foreach (var c in query_join5)
{
System.Console.WriteLine(c.account_name + " " + c.account_city);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join5 = From a In svcContext.AccountSet _
Join a2 In svcContext.AccountSet _
On a.ParentAccountId.Id Equals a2.AccountId _
Select New With {
Key .account_name = a.Name,
Key .account_city = a.Address1_City
}
For Each c In query_join5
Console.WriteLine(c.account_name & " " & c.account_city)
Next c
End Using
이중 및 다중 조인
다음 샘플에서는 연락처는 거래처에 대한 기본 연락처이고 잠재 고객은 거래처에 대해 원래 잠재 고객인 거래처, 연락처 및 잠재 고객의 정보를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join4 = from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
join l in svcContext.LeadSet
on a.OriginatingLeadId.Id equals l.LeadId
select new
{
contact_name = c.FullName,
account_name = a.Name,
lead_name = l.FullName
};
foreach (var c in query_join4)
{
System.Console.WriteLine(c.contact_name +
" " +
c.account_name +
" " +
c.lead_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join4 = From a In svcContext.AccountSet _
Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId _
Join l In svcContext.LeadSet _
On a.OriginatingLeadId.Id Equals l.LeadId _
Select New With {Key .contact_name = c.FullName,
Key .account_name = a.Name,
Key .lead_name = l.FullName}
For Each c In query_join4
Console.WriteLine(c.contact_name & " " & c.account_name _
& " " & c.lead_name)
Next c
End Using
다음 샘플에서는 거래처는 거래처에 대한 상위 거래처이고 연락처는 거래처에 대해 기본 연락처인 거래처 및 연락처 정보를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join6 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
join a2 in svcContext.AccountSet
on a.ParentAccountId.Id equals a2.AccountId
select new
{
contact_name = c.FullName,
account_name = a.Name
};
foreach (var c in query_join6)
{
System.Console.WriteLine(c.contact_name + " " + c.account_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join6 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.PrimaryContactId.Id _
Join a2 In svcContext.AccountSet _
On a.ParentAccountId.Id Equals a2.AccountId _
Select New With {Key .contact_name = c.FullName,
Key .account_name = a.Name}
For Each c In query_join6
Console.WriteLine(c.contact_name & " " & c.account_name)
Next c
End Using
엔터티 필드를 사용하여 조인
다음 샘플에서는 목록에서 거래처에 대한 정보를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var list_join = (from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
where a.Name == "Contoso Ltd" &&
a.Address1_Name == "Contoso Pharmaceuticals"
select a).ToList();
foreach (var c in list_join)
{
System.Console.WriteLine("Account " + list_join[0].Name
+ " and it's primary contact "
+ list_join[0].PrimaryContactId.Id);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim list_join = ( _
From a In svcContext.AccountSet _
Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId _
Where a.Name.Equals("Contoso Ltd") _
And a.Address1_Name.Equals("Contoso Pharmaceuticals") _
Select a).ToList()
For Each c In list_join
Console.WriteLine("Account " & list_join(0).Name _
& " and it's primary contact " _
& list_join(0).PrimaryContactId.Id.ToString())
Next c
End Using
런타임에 바인딩 왼쪽 조인
다음 샘플은 왼쪽 조인을 표시합니다. 왼쪽 조인은 두 원본에서 하위 항목이 있는 상위 항목과 하위 항목이 없는 상위 항목을 반환하도록 설계되었습니다. 상위 항목과 하위 항목 사이에는 상관 관계가 있지만 하위 항목은 실제로 존재하지 않을 수 있습니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join8 = from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
into gr
from c_joined in gr.DefaultIfEmpty()
select new
{
contact_name = c_joined.FullName,
account_name = a.Name
};
foreach (var c in query_join8)
{
System.Console.WriteLine(c.contact_name + " " + c.account_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join8 = From a In svcContext.AccountSet _
Group Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId Into gr = _
Group From c_joined In gr.DefaultIfEmpty() _
Select New With {Key .contact_name = c_joined.FullName,
Key .account_name = a.Name}
For Each c In query_join8
Console.WriteLine(c.contact_name & " " & c.account_name)
Next c
End Using
Equals 연산자 사용
다음 샘플에서는 FirstName이 "Colin"인 연락처 목록을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_equals1 = from c in svcContext.ContactSet
where c.FirstName.Equals("Colin")
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_equals1)
{
System.Console.WriteLine(c.FirstName +
" " + c.LastName +
" " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_equals1 = From c In svcContext.ContactSet _
Where c.FirstName.Equals("Colin") _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_equals1
Console.WriteLine(c.FirstName & " " & c.LastName & " " _
& c.Address1_City)
Next c
End Using
다음 샘플에서는 FamilyStatusCode이 3인 연락처 목록을 검색하는 방법을 보여 줍니다. 이는 혼인 여부 옵션에서 이혼에 해당합니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_equals2 = from c in svcContext.ContactSet
where c.FamilyStatusCode.Equals(3)
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_equals2)
{
System.Console.WriteLine(c.FirstName +
" " + c.LastName +
" " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_equals2 = From c In svcContext.ContactSet _
Where c.FamilyStatusCode.Equals(3) _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_equals2
Console.WriteLine(c.FirstName & " " & c.LastName & " " _
& c.Address1_City)
Next c
End Using
Not Equals 연산자 사용
다음 샘플에서는 Address1_City이 "Redmond"가 아닌 연락처 목록을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_ne1 = from c in svcContext.ContactSet
where c.Address1_City != "Redmond"
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_ne1)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_ne1 = From c In svcContext.ContactSet _
Where c.Address1_City IsNot "Redmond" _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_ne1
Console.WriteLine(c.FirstName & " " & c.LastName _
& " " & c.Address1_City)
Next c
End Using
다음 샘플에서는 FirstName이 "Colin"이 아닌 연락처 목록을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_ne2 = from c in svcContext.ContactSet
where !c.FirstName.Equals("Colin")
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_ne2)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_ne2 = From c In svcContext.ContactSet _
Where (Not c.FirstName.Equals("Colin")) _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_ne2
Console.WriteLine(c.FirstName & " " & c.LastName & " " _
& c.Address1_City)
Next c
End Using
Where 절로 메서드 기반 LINQ 쿼리 사용
다음 샘플에서는 LastName이 “Smith”이거나 “Smi”이 포함된 연락처 목록을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var methodResults = svcContext.ContactSet
.Where(a => a.LastName == "Smith");
var methodResults2 = svcContext.ContactSet
.Where(a => a.LastName.StartsWith("Smi"));
Console.WriteLine();
Console.WriteLine("Method query using Lambda expression");
Console.WriteLine("---------------------------------------");
foreach (var a in methodResults)
{
Console.WriteLine("Name: " + a.FirstName + " " + a.LastName);
}
Console.WriteLine("---------------------------------------");
Console.WriteLine("Method query 2 using Lambda expression");
Console.WriteLine("---------------------------------------");
foreach (var a in methodResults2)
{
Console.WriteLine("Name: " + a.Attributes["firstname"] +
" " + a.Attributes["lastname"]);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim methodResults = svcContext.ContactSet _
.Where(Function(a) a.LastName.Equals("Smith"))
Dim methodResults2 = svcContext.ContactSet _
.Where(Function(a) a.LastName.StartsWith("Smi"))
Console.WriteLine()
Console.WriteLine("Method query using Lambda expression")
Console.WriteLine("---------------------------------------")
For Each a In methodResults
Console.WriteLine("Name: " & a.FirstName & " " & a.LastName)
Next a
Console.WriteLine("---------------------------------------")
Console.WriteLine("Method query 2 using Lambda expression")
Console.WriteLine("---------------------------------------")
For Each a In methodResults2
Console.WriteLine("Name: " & a.Attributes("firstname").ToString() _
& " " & a.Attributes("lastname").ToString())
Next a
End Using
Greater Than 연산자 사용
다음 샘플에서는 2010년 2월 5일 이후 Anniversary 날짜가 포함된 연락처 목록을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_gt1 = from c in svcContext.ContactSet
where c.Anniversary > new DateTime(2010, 2, 5)
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_gt1)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_gt1 = From c In svcContext.ContactSet _
Where c.Anniversary > New Date(2010, 2, 5) _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_gt1
Console.WriteLine(c.FirstName & " " & c.LastName _
& " " & c.Address1_City)
Next c
End Using
다음 샘플에서는 CreditLimit이 $20,000보다 큰 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_gt2 = from c in svcContext.ContactSet
where c.CreditLimit.Value > 20000
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_gt2)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_gt2 = From c In svcContext.ContactSet _
Where c.CreditLimit.Value > 20000 _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_gt2
Console.WriteLine(c.FirstName & " " & c.LastName _
& " " & c.Address1_City)
Next c
End Using
Greater Than or Equals 및 Less Than or Equals 연산자 사용
다음 샘플에서는 CreditLimit이 $200보다 크고 $400보다 작은 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_gele1 = from c in svcContext.ContactSet
where c.CreditLimit.Value >= 200 &&
c.CreditLimit.Value <= 400
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_gele1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_gele1 = From c In svcContext.ContactSet _
Where c.CreditLimit.Value >= 200 _
AndAlso c.CreditLimit.Value <= 400 _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_gele1
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
Contains 연산자 사용
다음 샘플에서는 Description에 "Alpine"이 포함된 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_contains1 = from c in svcContext.ContactSet
where c.Description.Contains("Alpine")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_contains1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_contains1 = From c In svcContext.ContactSet _
Where c.Description.Contains("Alpine") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_contains1
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
Does Not Contain 연산자 사용
다음 샘플에서는 Description에 "Coho"가 포함되지 않은 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_contains2 = from c in svcContext.ContactSet
where !c.Description.Contains("Coho")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_contains2)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_contains2 = From c In svcContext.ContactSet _
Where (Not c.Description.Contains("Coho")) _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_contains2
Console.WriteLine(c.FirstName.ToString() & " " _
& c.LastName.ToString())
Next c
End Using
StartsWith 및 EndsWith 연산자 사용
다음 샘플에서는 FirstName이 “Bri”로 시작하는 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_startswith1 = from c in svcContext.ContactSet
where c.FirstName.StartsWith("Bri")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_startswith1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_startswith1 = From c In svcContext.ContactSet _
Where c.FirstName.StartsWith("Bri") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_startswith1
Console.WriteLine(c.FirstName.ToString() & " " _
& c.LastName.ToString())
Next c
End Using
다음 샘플에서는 LastName이 “cox”로 끝나는 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_endswith1 = from c in svcContext.ContactSet
where c.LastName.EndsWith("cox")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_endswith1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_endswith1 = From c In svcContext.ContactSet _
Where c.LastName.EndsWith("cox") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_endswith1
Console.WriteLine(c.FirstName.ToString() & " " _
& c.LastName.ToString())
Next c
End Using
And 및 Or 연산자 사용
다음 샘플에서는 Address1_City가 “Redmond”이거나 “Bellevue”이고 CreditLimit가 $200보다 큰 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_andor1 = from c in svcContext.ContactSet
where ((c.Address1_City == "Redmond" ||
c.Address1_City == "Bellevue") &&
(c.CreditLimit.Value != null &&
c.CreditLimit.Value >= 200))
select c;
foreach (var c in query_andor1)
{
System.Console.WriteLine(c.LastName + ", " + c.FirstName + " " +
c.Address1_City + " " + c.CreditLimit.Value);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_andor1 = From c In svcContext.ContactSet _
Where c.Address1_City.Equals("Redmond") _
OrElse c.Address1_City.Equals("Bellevue") _
AndAlso c.CreditLimit.Value >= 200 _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.CreditLimit,
Key c.Address1_City}
For Each c In query_andor1
Console.WriteLine(c.LastName.ToString() & ", " _
& c.FirstName.ToString() & " " _
& c.Address1_City.ToString() & " " _
& c.CreditLimit.Value.ToString())
Next c
End Using
OrderBy 연산자 사용
다음 샘플에서는 CreditLimit에 따라 내림차순으로 정렬되는 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_orderby1 = from c in svcContext.ContactSet
where !c.CreditLimit.Equals(null)
orderby c.CreditLimit descending
select new
{
limit = c.CreditLimit,
first = c.FirstName,
last = c.LastName
};
foreach (var c in query_orderby1)
{
System.Console.WriteLine(c.limit.Value + " " +
c.last + ", " + c.first);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_orderby1 = From c In svcContext.ContactSet _
Where (Not c.CreditLimit.Equals(Nothing)) _
Order By c.CreditLimit Descending _
Select New With {Key .limit = c.CreditLimit,
Key .first = c.FirstName,
Key .last = c.LastName}
For Each c In query_orderby1
Console.WriteLine(c.limit.Value & " " & c.last & ", " _
& c.first)
Next c
End Using
다음 샘플에서는 LastName에 따라 내림차순으로 정렬되고 FirstName에 따라 오름차순으로 정렬되는 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_orderby2 = from c in svcContext.ContactSet
orderby c.LastName descending,
c.FirstName ascending
select new
{
first = c.FirstName,
last = c.LastName
};
foreach (var c in query_orderby2)
{
System.Console.WriteLine(c.last + ", " + c.first);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_orderby2 = From c In svcContext.ContactSet _
Order By c.LastName Descending, _
c.FirstName Ascending _
Select New With {Key .first = c.FirstName,
Key .last = c.LastName}
For Each c In query_orderby2
Console.WriteLine(c.last & ", " & c.first)
Next c
End Using
First 및 Single 연산자 사용
다음 샘플에서는 반환되는 첫 번째 연락처와 조건과 일치하는 연락처 레코드만 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
Contact firstcontact = svcContext.ContactSet.First();
Contact singlecontact = svcContext.ContactSet.Single(c => c.ContactId == _contactId1);
System.Console.WriteLine(firstcontact.LastName + ", " +
firstcontact.FirstName + " is the first contact");
System.Console.WriteLine("==========================");
System.Console.WriteLine(singlecontact.LastName + ", " +
singlecontact.FirstName + " is the single contact");
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim firstcontact As Contact = svcContext.ContactSet _
.First()
Console.WriteLine(firstcontact.LastName & ", " _
& firstcontact.FirstName _
& " is the first contact")
Console.WriteLine("==========================")
Dim singlecontact As Contact =
svcContext.ContactSet _
.Single(Function(c) c.ContactId.Value.Equals(_contactId1))
Console.WriteLine(singlecontact.LastName & ", " _
& singlecontact.FirstName _
& " is the single contact")
End Using
서식이 지정된 값 검색
다음 샘플에서는 옵션 집합 옵션의 레이블, 이 경우에는 현재 레코드 상태의 값을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var list_retrieve1 = from c in svcContext.ContactSet
where c.ContactId == _contactId1
select new { StatusReason = c.FormattedValues["statuscode"] };
foreach (var c in list_retrieve1)
{
System.Console.WriteLine("Status: " + c.StatusReason);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim list_retrieve1 = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId1) _
Select New With
{Key .StatusReason =
c.FormattedValues("statuscode")}
For Each c In list_retrieve1
Console.WriteLine("Status: " & c.StatusReason)
Next c
End Using
페이징 없이 Skip 및 Take 연산자 사용
다음 샘플에서는 Skip 및 Take연산자를 사용하여 LastName이 “Parker”가 아닌 두 레코드를 건너뛴 후 두 레코드만 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_skip = (from c in svcContext.ContactSet
where c.LastName != "Parker"
orderby c.FirstName
select new
{
last = c.LastName,
first = c.FirstName
}).Skip(2).Take(2);
foreach (var c in query_skip)
{
System.Console.WriteLine(c.first + " " + c.last);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_skip = ( _
From c In svcContext.ContactSet _
Where c.LastName IsNot "Parker" _
Order By c.FirstName _
Select New With {Key .last = c.LastName,
Key .first = c.FirstName}).Skip(2).Take(2)
For Each c In query_skip
Console.WriteLine(c.first & " " & c.last)
Next c
End Using
FirstOrDefault 및 SingleOrDefault 연산자 사용
FirstOrDefault 연산자는 시퀀스의 첫 번째 요소를 반환하거나 요소가 없을 경우 기본값을 반환합니다.SingleOrDefault 연산자는 시퀀스의 특정 단일 요소를 반환하거나 요소가 없을 경우 기본값을 반환합니다. 다음 샘플에서는 이러한 연산자를 사용하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
Contact firstorcontact = svcContext.ContactSet.FirstOrDefault();
Contact singleorcontact = svcContext.ContactSet
.SingleOrDefault(c => c.ContactId == _contactId1);
System.Console.WriteLine(firstorcontact.FullName +
" is the first contact");
System.Console.WriteLine("==========================");
System.Console.WriteLine(singleorcontact.FullName +
" is the single contact");
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim firstorcontact As Contact =
svcContext.ContactSet.FirstOrDefault()
Console.WriteLine(firstorcontact.FullName & " is the first contact")
Console.WriteLine("==========================")
Dim singleorcontact As Contact =
svcContext.ContactSet _
.SingleOrDefault(Function(c) c.ContactId.Value.Equals(_contactId1))
Console.WriteLine(singleorcontact.FullName & " is the single contact")
End Using
연결된 엔터티에 조건이 있는 셀프 조인 사용
다음 샘플에서는 거래처가 다른 거래처의 상위 거래처인 두 거래처의 이름을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_joincond = from a1 in svcContext.AccountSet
join a2 in svcContext.AccountSet
on a1.ParentAccountId.Id equals a2.AccountId
where a2.AccountId == _accountId1
select new { Account = a1, Parent = a2 };
foreach (var a in query_joincond)
{
System.Console.WriteLine(a.Account.Name + " " + a.Parent.Name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_joincond = From a1 In svcContext.AccountSet _
Join a2 In svcContext.AccountSet _
On a1.ParentAccountId.Id Equals a2.AccountId _
Where a2.AccountId.Value.Equals(_accountId1) _
Select New With {Key .Account = a1,
Key .Parent = a2}
For Each a In query_joincond
Console.WriteLine(a.Account.Name & " " & a.Parent.Name)
Next a
End Using
Where 절에 변환 사용
다음 샘플에서는 기념일 날짜가 2010년 1월 1일 이후인 특정 연락처를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_wheretrans = from c in svcContext.ContactSet
where c.ContactId == _contactId1 &&
c.Anniversary > DateTime.Parse("1/1/2010")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_wheretrans)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_wheretrans = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId1) _
AndAlso c.Anniversary > Date.Parse("1/1/2010") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_wheretrans
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
페이징 정렬 사용
다음 샘플에서는 추가 조건이 있는 다중 열 정렬을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_pagingsort1 = (from c in svcContext.ContactSet
where c.LastName != "Parker"
orderby c.LastName ascending,
c.FirstName descending
select new { c.FirstName, c.LastName })
.Skip(2).Take(2);
foreach (var c in query_pagingsort1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_pagingsort1 = ( _
From c In svcContext.ContactSet _
Where c.LastName IsNot "Parker" _
Order By c.LastName Ascending, c.FirstName Descending _
Select New With {Key c.FirstName,
Key c.LastName}).Skip(2).Take(2)
For Each c In query_pagingsort1
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
다음 샘플에서는 정렬되는 열이 검색되는 열과 다른 페이징 정렬을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_pagingsort2 = (from c in svcContext.ContactSet
where c.LastName != "Parker"
orderby c.FirstName descending
select new { c.FirstName }).Skip(2).Take(2);
foreach (var c in query_pagingsort2)
{
System.Console.WriteLine(c.FirstName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_pagingsort2 = ( _
From c In svcContext.ContactSet _
Where c.LastName IsNot "Parker" _
Order By c.FirstName Descending _
Select New With {Key c.FirstName}).Skip(2).Take(2)
For Each c In query_pagingsort2
Console.WriteLine(c.FirstName)
Next c
End Using
다음 샘플에서는 첫 번째 10개 레코드를 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_pagingsort3 = (from c in svcContext.ContactSet
where c.LastName.StartsWith("W")
orderby c.MiddleName ascending,
c.FirstName descending
select new
{
c.FirstName,
c.MiddleName,
c.LastName
}).Take(10);
foreach (var c in query_pagingsort3)
{
System.Console.WriteLine(c.FirstName + " " +
c.MiddleName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_pagingsort3 = ( _
From c In svcContext.ContactSet _
Where c.LastName.StartsWith("W") _
Order By c.MiddleName Ascending, c.FirstName Descending _
Select New With {Key c.FirstName,
Key c.MiddleName,
Key c.LastName}).Take(10)
For Each c In query_pagingsort3
Console.WriteLine(c.FirstName & " " & c.MiddleName & " " & c.LastName)
Next c
End Using
1:N 관계에 대해 관련 엔터티 열 검색
다음 샘플에서는 관련 거래처 및 연락처 레코드에서 열을 검색하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_retrieve1 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
where c.ContactId != _contactId1
select new { Contact = c, Account = a };
foreach (var c in query_retrieve1)
{
System.Console.WriteLine("Acct: " + c.Account.Name +
"\t\t" + "Contact: " + c.Contact.FullName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_retrieve1 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.PrimaryContactId.Id _
Where Not c.ContactId.Value.Equals(_contactId1) _
Select New With {Key .Contact = c,
Key .Account = a}
For Each c In query_retrieve1
Console.WriteLine("Acct: " & c.Account.Name & vbTab & vbTab _
& "Contact: " & c.Contact.FullName)
Next c
End Using
.Value를 사용하여 특성 값 검색
다음 샘플에서는 특성의 값에 액세스하는 값 사용법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_value = from c in svcContext.ContactSet
where c.ContactId != _contactId2
select new
{
ContactId = c.ContactId != null ?
c.ContactId.Value : Guid.Empty,
NumberOfChildren = c.NumberOfChildren != null ?
c.NumberOfChildren.Value : default(int),
CreditOnHold = c.CreditOnHold != null ?
c.CreditOnHold.Value : default(bool),
Anniversary = c.Anniversary != null ?
c.Anniversary.Value : default(DateTime)
};
foreach (var c in query_value)
{
System.Console.WriteLine(c.ContactId + " " + c.NumberOfChildren +
" " + c.CreditOnHold + " " + c.Anniversary);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_value = From c In svcContext.ContactSet _
Where Not c.ContactId.Value.Equals(_contactId2) _
Select New With
{Key .ContactId = If(
c.ContactId IsNot Nothing,
c.ContactId.Value,
Guid.Empty),
Key .NumberOfChildren = If(
c.NumberOfChildren IsNot Nothing,
c.NumberOfChildren.Value, Nothing),
Key .CreditOnHold = If(
c.CreditOnHold IsNot Nothing,
c.CreditOnHold.Value,
Nothing),
Key .Anniversary = If(
c.Anniversary IsNot Nothing,
c.Anniversary.Value,
Nothing)}
For Each c In query_value
Console.WriteLine(c.ContactId.ToString() & " " _
& c.NumberOfChildren & " " _
& c.CreditOnHold & " " & c.Anniversary)
Next c
End Using
여러 예측, 새로운 데이터 유형을 다른 유형으로 캐스팅
다음 샘플에서는 여러 예측 및 다른 유형으로 값을 캐스팅하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_projections = from c in svcContext.ContactSet
where c.ContactId == _contactId1
&& c.NumberOfChildren != null &&
c.Anniversary.Value != null
select new
{
Contact = new Contact {
LastName = c.LastName,
NumberOfChildren = c.NumberOfChildren
},
NumberOfChildren = (double)c.NumberOfChildren,
Anniversary = c.Anniversary.Value.AddYears(1),
};
foreach (var c in query_projections)
{
System.Console.WriteLine(c.Contact.LastName + " " +
c.NumberOfChildren + " " + c.Anniversary);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_projections = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId1) _
And Not c.NumberOfChildren.Equals(Nothing) _
And Not c.Anniversary.Equals(Nothing) _
Select New With
{Key .Contact =
New Contact With
{.LastName = c.LastName,
.NumberOfChildren = c.NumberOfChildren},
Key .NumberOfChildren = CDbl(c.NumberOfChildren),
Key .Anniversary = c.Anniversary.Value.AddYears(1)}
For Each c In query_projections
Console.WriteLine(c.Contact.LastName & " " & c.NumberOfChildren _
& " " & c.Anniversary)
Next c
End Using
GetAttributeValue 메서드 사용
다음 샘플에서는 GetAttributeValue<T> 메서드를 사용하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_getattrib = from c in svcContext.ContactSet
where c.GetAttributeValue<Guid>("contactid") != _contactId1
select new
{
ContactId = c.GetAttributeValue<Guid?>("contactid"),
NumberOfChildren = c.GetAttributeValue<int?>("numberofchildren"),
CreditOnHold = c.GetAttributeValue<bool?>("creditonhold"),
Anniversary = c.GetAttributeValue<DateTime?>("anniversary"),
};
foreach (var c in query_getattrib)
{
System.Console.WriteLine(c.ContactId + " " + c.NumberOfChildren +
" " + c.CreditOnHold + " " + c.Anniversary);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_getattrib = From c In svcContext.ContactSet _
Where Not c.GetAttributeValue(Of Guid)("contactid").Equals( _
_contactId1) _
Select New With
{Key .ContactId =
c.GetAttributeValue(Of Guid?)("contactid"),
Key .NumberOfChildren =
c.GetAttributeValue(Of Integer?)("numberofchildren"),
Key .CreditOnHold =
c.GetAttributeValue(Of Boolean?)("creditonhold"),
Key .Anniversary =
c.GetAttributeValue(Of Date?)("anniversary")}
For Each c In query_getattrib
Console.WriteLine(c.ContactId.ToString() & " " _
& c.NumberOfChildren & " " & c.CreditOnHold _
& " " & c.Anniversary)
Next c
End Using
Math 메서드 사용
다음 샘플에서는 다양한 Math 메서드를 사용하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_math = from c in svcContext.ContactSet
where c.ContactId != _contactId2
&& c.Address1_Latitude != null &&
c.Address1_Longitude != null
select new
{
Round = Math.Round(c.Address1_Latitude.Value),
Floor = Math.Floor(c.Address1_Latitude.Value),
Ceiling = Math.Ceiling(c.Address1_Latitude.Value),
Abs = Math.Abs(c.Address1_Latitude.Value),
};
foreach (var c in query_math)
{
System.Console.WriteLine(c.Round + " " + c.Floor +
" " + c.Ceiling + " " + c.Abs);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_math = From c In svcContext.ContactSet _
Where Not c.ContactId.Value.Equals(_contactId2) _
AndAlso c.Address1_Latitude IsNot Nothing _
AndAlso c.Address1_Longitude IsNot Nothing _
Select New With
{Key .Round =
Math.Round(c.Address1_Latitude.Value),
Key .Floor =
Math.Floor(c.Address1_Latitude.Value),
Key .Ceiling =
Math.Ceiling(c.Address1_Latitude.Value),
Key .Abs =
Math.Abs(c.Address1_Latitude.Value)}
For Each c In query_math
Console.WriteLine(c.Round & " " & c.Floor & " " _
& c.Ceiling & " " & c.Abs)
Next c
End Using
Multiple Select 및 Where 절 사용
다음 샘플에서는 메서드 기반 쿼리 구문을 사용하여 multiple select 및 where 절을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_multiselect = svcContext.IncidentSet
.Where(i => i.IncidentId != _incidentId1)
.Select(i => i.incident_customer_accounts)
.Where(a => a.AccountId != _accountId2)
.Select(a => a.account_primary_contact)
.OrderBy(c => c.FirstName)
.Select(c => c.ContactId);
foreach (var c in query_multiselect)
{
System.Console.WriteLine(c.GetValueOrDefault());
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_multiselect =
svcContext.IncidentSet _
.Where(Function(i) Not i.IncidentId.Value.Equals(_incidentId1)) _
.Select(Function(i) i.incident_customer_accounts) _
.Where(Function(a) Not a.AccountId.Value.Equals(_accountId2)) _
.Select(Function(a) a.account_primary_contact) _
.OrderBy(Function(c) c.FirstName).Select(Function(c) c.ContactId)
For Each c In query_multiselect
Console.WriteLine(c.GetValueOrDefault())
Next c
End Using
SelectMany 사용
다음 샘플에서는 SelectMany 메서드를 사용하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_selectmany = svcContext.ContactSet
.Where(c => c.ContactId != _contactId2)
.SelectMany(c => c.account_primary_contact)
.OrderBy(a => a.Name);
foreach (var c in query_selectmany)
{
System.Console.WriteLine(c.AccountId + " " + c.Name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_selectmany =
svcContext.ContactSet _
.Where(Function(c) Not c.ContactId.Value.Equals(_contactId2)) _
.SelectMany(Function(c) c.account_primary_contact) _
.OrderBy(Function(a) a.Name)
For Each c In query_selectmany
Console.WriteLine(c.AccountId.ToString() & " " & c.Name)
Next c
End Using
String 연산 사용
다음 샘플에서는 다양한 String 메서드를 사용하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_string = from c in svcContext.ContactSet
where c.ContactId == _contactId2
select new
{
IndexOf = c.FirstName.IndexOf("contact"),
Insert = c.FirstName.Insert(1, "Insert"),
Remove = c.FirstName.Remove(1, 1),
Substring = c.FirstName.Substring(1, 1),
ToUpper = c.FirstName.ToUpper(),
ToLower = c.FirstName.ToLower(),
TrimStart = c.FirstName.TrimStart(),
TrimEnd = c.FirstName.TrimEnd(),
};
foreach (var c in query_string)
{
System.Console.WriteLine(c.IndexOf + "\n" + c.Insert + "\n" +
c.Remove + "\n" + c.Substring + "\n"
+ c.ToUpper + "\n" + c.ToLower +
"\n" + c.TrimStart + " " + c.TrimEnd);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_string = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId2) _
Select New With
{Key .IndexOf = c.FirstName.IndexOf("contact"),
Key .Insert = c.FirstName.Insert(1, "Insert"),
Key .Remove = c.FirstName.Remove(1, 1),
Key .Substring = c.FirstName.Substring(1, 1),
Key .ToUpper = c.FirstName.ToUpper(),
Key .ToLower = c.FirstName.ToLower(),
Key .TrimStart = c.FirstName.TrimStart(),
Key .TrimEnd = c.FirstName.TrimEnd()}
For Each c In query_string
Console.WriteLine(c.IndexOf & vbLf & c.Insert & vbLf _
& c.Remove & vbLf & c.Substring & vbLf _
& c.ToUpper & vbLf & c.ToLower & vbLf _
& c.TrimStart & " " & c.TrimEnd)
Next c
End Using
Where 절 두 개 사용
다음 샘플에서는 Where 절 두 개를 사용하는 방법을 보여 줍니다.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_twowhere = from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
where c.LastName == "Smith" && c.CreditOnHold != null
where a.Name == "Contoso Ltd"
orderby a.Name
select a;
foreach (var c in query_twowhere)
{
System.Console.WriteLine(c.AccountId + " " + c.Name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_twowhere = From a In svcContext.AccountSet _
Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId _
Where c.LastName.Equals("Smith") _
AndAlso c.CreditOnHold IsNot Nothing _
Where a.Name.Equals("Contoso Ltd") _
Order By a.Name _
Select a
For Each c In query_twowhere
Console.WriteLine(c.AccountId.ToString() & " " & c.Name)
Next c
End Using
LoadProperty를 사용하여 관련 레코드 검색
다음 샘플에서는 LoadProperty에서 관련 레코드에 액세스하는 방법을 보여 줍니다.
Contact benAndrews = svcContext.ContactSet.Where(c => c.FullName == "Ben Andrews").FirstOrDefault();
if (benAndrews != null)
{
//benAndrews.Contact_Tasks is null until LoadProperty is used.
svcContext.LoadProperty(benAndrews, "Contact_Tasks");
Task benAndrewsFirstTask = benAndrews.Contact_Tasks.FirstOrDefault();
if (benAndrewsFirstTask != null)
{
Console.WriteLine("Ben Andrews first task with Subject: '{0}' retrieved.", benAndrewsFirstTask.Subject);
}
}
참고 항목
LINQ(.NET 언어 통합 쿼리)를 사용하여 쿼리 작성
샘플: LINQ 쿼리 만들기
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 저작권 정보