1

我知道进行此类查询并不罕见,但我想我迷路了,所以我寻求帮助。我必须使用关系为 1:N 的表格,为了更清楚,我将从管理工作室发布一个打印屏幕:

表关系

我正在处理一个 asp.net mvc 3 项目,我需要创建一个视图,所有内容都Documents将显示(以及一些过滤器和东西,但我认为这与这种情况无关)。我需要表格中的数据以及表格Documents中每个文档的一个特定记录DocumentFields。该记录是保存文档名称的记录,它的唯一性是 DocumentID == Docmuents.Id、DocumentFields.RowNo == 1 和 DocumentsFields.ColumnNo == 2。这是每个文档的唯一记录,我需要FieldValue从该记录实际上包含文档的名称。

我不太确定如何构建我的查询(可能使用 JOIN),我也想让我的视图通过类型模型进行强类型化,Documents但我不确定是否可能,但我认为取决于查询的方式is build 将确定视图模型的类型。

4

1 回答 1

3

我相信你想要的是这样的:

var results = 
    from d in dbContext.Documents
    join df in dbContext.DocumentFields 
    on new { d.Id, RowNo = 1, ColumnNo = 2 } equals 
       new { Id = df.DocumentId, df.RowNo, df.ColumnNo }
    select new 
    {
        Document = d,
        DocumentName = df.FieldValue
    };

当然,如果你设置了导航属性,你可以这样做:

var results = 
    from d in dbContext.Documents
    let df = d.DocumentFields.First(x => x.RowNo == 1 && x.ColumnNo == 2)
    select new 
    {
        Document = d,
        DocumentName = df.FieldValue
    };
于 2013-05-10T06:05:44.867 回答