在LINQ中加入类

时间:2012-07-18 13:52:33

标签: .net linq

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

我的问题是,是否有人知道有助于自动创建这些连接类的工具。当桌子太大时手工做是一项繁重的任务,对于维护人员来说,我觉得这也非常烦人。

提前致谢。

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

现在我使用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?
}

3 个答案:

答案 0 :(得分:1)

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

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

您始终可以在数据库中创建视图,如果在代码中手动加入,则可以查询它。

答案 1 :(得分:1)

它被称为“编译器”。如果允许你使用匿名类型,而不需要正式的类定义。

答案 2 :(得分:1)

使用Linqer

使用此工具,您实际上可以编写SQL&amp;该工具将其转换为LINQ构造。