Linq - 多对多。选择下拉列表

时间:2014-02-23 22:21:57

标签: c# linq

我有这3张桌子

tblDocument(DocId, DocName)
tblSubPerson(DocId, PersonId)
tblPerson(PersonId, PersonName)
ddlPerson让我的所有人都参与其中。

我正在尝试编写一个linq查询,其中我想返回所选文档与所选人员有关系的所有文档并在翻译器中显示

到目前为止....不知道我做错了

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();
}

1 个答案:

答案 0 :(得分: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();