2014-02-23 57 views
0

選擇我得到了這3個表Linq - 多對多。與下拉

tblDocument(DocId, DocName) 
tblSubPerson(DocId, PersonId) 
tblPerson(PersonId, PersonName) 

ddlPerson有我所有的人relatet它。

我想寫LINQ查詢,我想返回所有的文件IND tblDocument所選擇的人有關係,並在repeter

顯示它走到這一步....不要」知道如果我做錯了

public void testing() 
{ 
    string se = ddlPerson.SelectedValue; 
    var data = new MyModelContext(); 
    rptResult.DataSource = from y in data.tblDocuments 
          join p in data.tblSubPersons on y.DocId equals p.DocId 
          select p.PersonId.Equals(se); 
    rptResult.DataBind(); 
} 

回答

4

查詢返回bool值的集合,因爲這是Equals()方法返回。您應該使用where子句僅爲給定的人獲取文檔:

var personId = int.Parse(ddlPerson.SelectedValue); 

var data = new MyModelContext(); 

var documents = from d in data.tblDocumenta 
       join sp in data.tblSubPerson on d.DocId equals sp.DocId 
       where sp.PersonId == personId 
       select d; 

rptResult.DataSource = documents.ToList(); 
rptResult.DataBind(); 
+0

當personId是int並且下拉字符串是字符串時,不能使用「==」運算符。試圖將下拉轉換爲int32。但劑量工作..:/任何建議? –

+0

你嘗試過使用'int.Parse'嗎?我已經更新了我的答案。 – MarcinJuraszek

+0

得到「輸入字符串格式不正確。」錯誤。 i'v增加了「var data = new MyModelContext();」到你的答案。 –