需要使用来自DataTable的LINQ选择的数据的“方法返回类型”

时间:2013-11-03 13:19:32

标签: c# .net linq

我有一个方法,它接收从数据库接收的数据,并且只接收具有特定日期的数据:

private static **return type** FilterDataByDay(DataTable dt, string nameOfTheDay)
    {
         var data = dt.AsEnumerable().Select(x => new
            {
                code = x.Field<string>("Code"),
                day= x.Field<string>("Day"),
                name= x.Field<string>("Name"),
                startTime= x.Field<int>("StartTime"),
                endTime= x.Field<int>("EndTime")

            })
                                    .Where(x => x.day.Equals(nameOfTheDay))
                                    .ToList();

        return data ;
    }

问题是我不知道如何从这个方法返回数据,其他方法可以把它打印出来,每行的每个元素,它应该让我打印像:

    foreach(var variable in "the retuned data from method")
    {
     Console.WriteLine(variable.code +" "+ variable.day + ..etc...
    }

3 个答案:

答案 0 :(得分:2)

您可以创建一个Wrapper类,然后您将IEnumerable<MyClass>

或者你可以使用IEnumerable<dynamic>,但这样 - 你不会有智慧。

答案 1 :(得分:2)

关于匿名类型的事情是它们没有被命名,例如匿名。

最好的做法是使用适当的属性定义自己的类,然后返回IEnumerable<SomeClass>

答案 2 :(得分:2)

定义一个封装加载数据的正确类可能是最好的方法。但是,如果您正在处理以后不需要的数据,并且您不能将它们传递到周围,您可以利用Tuple类。它看起来有点尴尬,但如果它只是你的代码并且它不是公共API的一部分那么它也是可用的。

您的返回类型将为IEnumerable<Tuple<string, string, string, int, int>>