2016-03-21 8 views
0

私は約30レコードを与えますが、私はlinqクエリに私に何千ものレコードを与えると同じクエリを与えるSQLクエリを持っています。いずれかが私を助けることができる私は、問題の実際の根本原因を見つける傾ける...LinqクエリはSQLクエリよりも多くのレコードを取得しています

SQLクエリ

  select 
DLId = p.Id, 
TopicId = st.Id, 
TopicName = at.Name, 
PrimaryOrg = bo.BusinessUnit, 
StatusId = ns.ID, 
ModifiedBy = pa.LastName 

from STopics st 
join ATopics at on st.Id = at.Id 
join Students p on st.StudentId = p.Id 
join Sorgs sbu on at.BUorgID = sbu.BUOrgID 
join BOrgs bo on sbu.BUOrgID = bo.ID 
join Status ns on st.SID = ns.ID 
join Students pa on st.NominatedBy = pa.Email 
where p.IsActive = 1 and sbu.StudentID = 123 and sbu.IsActive = 1 

とLINQクエリは

(from st in Context.STopics 
join at in Context.ATopics on st.Id equals at.Id 
join p in Context.Students on st.StudentId equals p.Id 
join sbu in Context.Sorgs on at.BUorgID equals sbu.BUOrgID 
join bo in Context.BOrgs on sbu.BUOrgID equals bo.ID 
join ns in Context.Status on st.SID equals ns.ID 
join pa in Context.Students on st.NominatedBy equals pa.Email 
where p.IsActive==true && sbu.StudentID == 123 && sbu.IsActive == true 
select new result() 
{ 
DLId = p.Id, 
    TopicId = st.Id, 
    TopicName = at.Name, 
PrimaryOrg = bo.BusinessUnit, 
StatusId = ns.ID, 
ModifiedBy = pa.LastName 
}) 
+1

StudentID <> ParticipantID –

+1

sry、それはタイプミスです。修正されました。 – poc

+7

[生成されたSQL](https://msdn.microsoft.com/en-us/library/bb386961%28v=vs.110%29.aspx)を確認してください – Martheen

答えて

0
(from st in Context.STopics 
join at in Context.ATopics on st.Id equals at.Id 
join p in Context.Students on new { st.StudentId, p.IsActive } equals new { p.Id , true} 
join sbu in Context.Sorgs on new { sbu.BUorgID, sbu.IsActive,sbu.StudentID } equals new { at.BUorgID , true, 123} 
join bo in Context.BOrgs on sbu.BUOrgID equals bo.ID 
join ns in Context.Status on st.SID equals ns.ID 
join pa in Context.Students on st.NominatedBy equals pa.Email 
select new result() 
{ 
DLId = p.Id, 
TopicId = st.Id, 
TopicName = at.Name, 
PrimaryOrg = bo.BusinessUnit, 
StatusId = ns.ID, 
ModifiedBy = pa.LastName 
}) 

ですが、あなたはこれを試すことができます1つ、正確な問題を取得したい場合は、SQLクエリがlinq文からどのように生成されるかを知ることができます。linqクエリは多くの内部クエリ方法を使用します。

var query= your linqquery; 
string sqlQuery=query.ToString(); 

you can review sqlQuery.