提问者:小点点

用Concat将linq查询包装到方法中


我有一个代码,我想将它包装到一个方法中,这样我就可以从中获得results作为输出。 调用另一个方法,例如var NewVariable=GetMyJoinedResult();来运行下面的代码。

我已经尝试使用public static IEnumerable<;string>; GetMyJoinedResult(),但由于当前对象是匿名的,代码甚至不会编译。

什么类型的公共静态“??” GetMyJoinedResult()是否应该用于此类过程?

下面是我当前的代码:

        var t1 = ConnectAndRetriveDatatatable1();
        var t2 = ConnectAndRetriveDatatatable2();

        var firstPart = from table1 in t2.AsEnumerable()
                        join table2 in t1.AsEnumerable()
                            on (string)table1["SNAME"] equals (string)table2["SNAME"] into temp
                        from table2 in temp.DefaultIfEmpty()
                        select new
                        {
                            NRO = (string)table1["NRO"],
                            NRO1 = table2 != null ? (string)table2["NRO"] : string.Empty,
                            SNAME = (string)table1["SNAME"],
                        };

        var secondPart = from table2 in t1.AsEnumerable()
                         join table1 in t2.AsEnumerable()
                             on (string)table2["SNAME"] equals (string)table1["SNAME"] into temp
                         from table1 in temp.DefaultIfEmpty()
                         where table1 == null
                         select new
                         {
                             NRO = string.Empty,
                             NRO1 = (string)table2["NRO"],
                             SNAME = (string)table2["SNAME"],
                         };

        var results = firstPart.Concat(secondPart);

共1个答案

匿名用户

如果结果总是相同,为什么不使用类

public class YourResult{
 public string NRO {get;set;}
 public string NRO1 {get;set;}
 public string SNAME {get;set;}
}

然后可以使用

select new YouResult
{
     NRO = string.Empty,
     NRO1 = (string)table2["NRO"],
     SNAME = (string)table2["SNAME"],
};

和类似于:public static IEnumerable; GetMyJoinedResult()