1

我开始使用 LINQ,据我所知,为了使用连接查询,我需要手动创建返回类,该类将包含我连接的两个或多个表的混合值。

我的问题是,是否有人知道有助于自动创建这些加入类的工具。当桌子太大时手工操作是一项繁重的任务,对于维护人员来说,我认为这也很烦人。

提前致谢。

编辑:我需要能够使用强数据类型的类,因此在 VS 中使用智能感知,我对 LINQ 查询本身没有问题,只有连接类才能返回。我来自“数据集世界”,我的联接查询自动创建相应的数据表。

现在我使用 ASP.NET MVC,所以我的方法返回一个 IEnumerable<> 类型,该类型稍后将作为模型对象传递给 View,例如:

public IEnumerable<MyJoinClass> GetData(int clientID)
{      
    var query =
    from t1 in objDataContext.table1
    join t2 in objDataContext.table2 on
    new { t1.clientID } equals new { t2.clientID }
    where t1.clientID == clientID
    select new MyJoinClass()
    {   
        //here the fields I want to retrieve... 
        column1_From_Table1 = t1.column1, 
        column2_From_Table1 = t1.column2, 
        //etc...
    };

    //Return result   
    return query;
}

public class MyJoinClass
{        
    public short column1_From_Table1;
    public string column2_From_Table1;
    public short? column3_From_Table1;
    public int column1_From_Table2;
    public short? column2_From_Table2;
    public string column3_From_Table2;
    //lets imagine 50 columns... do I need to do all this stuff on my own?
}
4

3 回答 3

1

It's called "The Compiler". If will let you use an anonymous type, without needing a formal class definition.

于 2012-07-18T13:57:45.320 回答
1

使用Linqer

使用此工具,您实际上可以编写 SQL,并且该工具会将其转换为 LINQ 结构。

于 2012-07-18T13:59:18.583 回答
1

没有这样的工具 AFAIK,因为没有理由写一个。你真的总是想从连接表中返回所有字段吗?不见得。

您可能正在做的是内部连接以过滤掉记录并在链接表上添加约束。从数据库中获取所有列可能是一种资源浪费。

如果在代码中手动连接,您总是可以在数据库中创建一个视图并查询它。

于 2012-07-18T13:55:42.650 回答