मैं वास्तव में इस तरह कुछ करना चाहता हूँ:कैसे LINQ की इकाइयां करने के लिए एक एसक्यूएल "कहाँ मौजूद है" करना है?
Select *
from A join B on A.key = B.key join C on B.key = C.key -- propagated keys
where exists (select null from B where A.key = B.key and B.Name = "Joe") and
exists (select null from C where B.key = C.key and C.Name = "Kim")
LINQ कथन का उपयोग इकाई की रूपरेखा 4 और सी # कैसे दिखते हैं?
अद्यतन:
जाहिर .Contains() का उत्पादन करेगा परिणाम "कहाँ मौजूद है"। तो, एक और प्रयास
(मैं अगर यह भी LOL संकलन होगा पता नहीं है):
var inner1 = from recordB in B
where recordB.Name = "Joe"
select recordB.key;
var inner2 = from recordC in C
where recordC.Name = "Kim"
select recordC.key;
var result = from recordA in A
where inner1.Contains(recordA.key) &&
inner2.Contains(recordA.key)
select recordA;
संपादित करें:
:var result = from A in Products
where A.kfield1 == 1 && A.kfield2 == 2 &&
(from B in Btable
where B.otherid == "Joe" && // field I want to select by
B.kfield1 == A.kfield1 &&
B.kfield2 == A.kfield2 // Can keep adding keys here
select A.identifier // unique identity field
).Contains(A.identifier) &&
(from C in Ctable
where C.otherid == "Kim" && // field I want to select by
C.kfield1 == A.kfield1 &&
C.kfield2 == A.kfield2 // Can keep adding keys here
select A.identifier // unique identity field
).Contains(A.identifier)
select A;
यह इस एसक्यूएल उत्पादित: वाह यह है कि क्या वास्तव में काम किया है
SELECT [t0].[identifier], [t0].*
FROM [A] AS [t0]
WHERE ([t0].[kfield1] = @p0) AND ([t0].[kfield2] = @p1) AND (EXISTS(
SELECT NULL AS [EMPTY]
FROM [B] AS [t1]
WHERE ([t0].[identifier] = [t0].[identifier]) AND ([t1].[otherid] = @p2) AND
([t1].[kfield1] = [t0].[kfield1]) AND
([t1].[kfield2] = [t0].[kfield2]))) AND (EXISTS(
SELECT NULL AS [EMPTY]
FROM [C] AS [t2]
WHERE ([t0].[identifier] = [t0].[identifier]) AND ([t2].[otherid] = @p3) AND
([t2].[kfield1] = [t0].[kfield1]) AND
([t2].[kfiekd2] = [t0].[kfield2])))
कौन सा मैं चाहता था है। सूचना [t0]। [पहचानकर्ता] = [t0]। [पहचानकर्ता], जो शून्य मान को फ़िल्टर कर देता है क्योंकि अशक्त ही (एसक्यूएल में) सहित कुछ भी करने के लिए बराबर की तुलना नहीं करता
यह जानना बहुत अच्छी बात है। अब तक इंटरनेट पर मिली एकमात्र चीज एसओ उत्तरों के बाहर है।()। मैंने देखा है। कुछ() इस्तेमाल किया लेकिन मैंने दो और दो एक साथ नहीं रखा। –
यह प्रश्न मुझे ऐसा करने के लिए कोड दिखा रहा है: http://stackoverflow.com/questions/4084102/how-would-i-improve-this-7-line-linq-query-that-acts-as-a- विनिर्देश –