2012-02-01 44 views
1

我有兩個N:N相關的實體。隨着一個例子,我會告訴你我是什麼意思:CRM 2011 - N:N(多對多)Linq問題

  • 我有一個會話(ave_Session),而且我們可以把「培訓師」 (ave_trainer)每個會話
  • 我tryting獲得N(關係名:ave_ave_session_ave_trainer)
  • 我在VS2010與C#的工作=>我試圖獲取特定會話
  • 他們在 ň相互關聯的人的 「培訓師」名單數據通過LINQ

我最近剛剛開始使用LINQ,所以也許你們可以幫我解決這個問題。我試過下面,我給我的。「AttributeFrom和AttributeTo必須是指定的兩個或兩個中省略你不能只傳遞一個或另一個AttributeFrom:,AttributeTo:ave_trainerid」誤差:

var formatteurs = (from f in ORGContext.CreateQuery<ave_trainer>() 
        join s in ORGContext.CreateQuery<ave_ave_session_ave_trainer>() on f.Id equals s.ave_trainerid.Value 
        join c in ORGContext.CreateQuery<ave_session>() on s.ave_sessionid.Value equals c.Id 
        where c.Id == item.Id 
        select f).ToList(); 

item.id是會話的Id。提前Thx如果你能幫助我!

+4

而不是使用'f.id'和'c.id的自由',嘗試使用'f.ave_trainerid'和'c.ave_sessionid'。 – 2012-02-01 17:08:41

+0

Peter的評論是答案(.id不是LINQ查詢中Guid字段的可用簡寫形式)。看到這個類似的問題/答案︰https://stackoverflow.com/questions/23373931/how-to-retieve-crm-guid-using-linq-and-joins – 2017-08-22 02:58:04

回答

1

MSDN頁:

// List the contacts in the Softball team marketing list. 
System.Console.WriteLine("List all contacts in Softball Team:"); 

var members = from c in crm.contacts 
       join mlm in crm.listmembers on c.contactid equals mlm.entityid 
       join ml in crm.lists on mlm.listid equals ml.listid 
       where ml.listname == "Softball Team" 
       select c; 

foreach (var c in members) 
{ 
    System.Console.WriteLine(c.fullname + " " + c.emailaddress1); 
} 
+0

這就是我也發現..上述加入是基於那..但是我似乎沒有找到正確的方式來做到這一點......我首先需要從關係中做一個或? – Freeetje 2012-02-01 16:47:07

1

這似乎有點倒退你現在寫的方式(假設我正確地分析它)。

你通常會做的是先把你的'開始的東西',然後通過映射去找到你想要的東西。我沒有任何CRM 2011的經驗,所以希望我不會把這件事搞得太多。 :)

而且,我不是單字符名字的粉絲,所以我把使用更長的名字:)

var formatteurs = (
    // first get the session we're interested in 
    from session in ORGContext.CreateQuery<ave_session>() 
    where session.Id == item.Id 

    // now get the mapping rows that are related to it 
    join mapping in ORGContext.CreateQuery<ave_ave_session_ave_trainer>() 
     on session.Id equals s.ave_sessionid.Value 

    // now get from the mapping rows to the actual trainers 
    join trainer in ORGContext.CreateQuery<ave_trainer>() 
     on mapping.ave_trainerid.Value equals trainer.Id 

    select trainer 
).ToList();