Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于返回匿名类型列表的方法,使用哪种返回类型?_C#_Linq_List - Fatal编程技术网

C# 对于返回匿名类型列表的方法,使用哪种返回类型?

C# 对于返回匿名类型列表的方法,使用哪种返回类型?,c#,linq,list,C#,Linq,List,负责重构旧代码的开发人员早就离开了 他给我留下了一点灵气: var orders = memberOrders .Join(members, x => x.MemberID, y => y.MemberID, (x,y) => new { Order = x , y.MemberName }) .OrderByDescending(x => x.Order.MailingDate).ToList(); 这将创建某种双值列表,其中Order对象连接到该对象的M

负责重构旧代码的开发人员早就离开了

他给我留下了一点灵气:

var orders = memberOrders
   .Join(members, x => x.MemberID, y => y.MemberID, (x,y) => new { Order = x , y.MemberName })
   .OrderByDescending(x => x.Order.MailingDate).ToList();
这将创建某种双值列表,其中Order对象连接到该对象的MemberName字符串

我想要一个函数来返回这个。但是,我无法确定函数需要返回什么类型

调用
GetType()
显示它被称为
List`1
,这并没有太大帮助。它看起来像一个由编译器动态构造成自定义对象的
列表


它是什么,如何从函数返回它?

它是在以下位置创建的匿名类型列表:

new { Order = x , y.MemberName }

它是在以下位置创建的匿名类型列表:

new { Order = x , y.MemberName }

它返回一个匿名类型的列表,该列表具有两个属性:
Order
MemberName
。从技术上讲,您可以返回匿名类型的列表(返回类型可以是
对象
列表
),但随后需要调用方使用反射或
动态
访问属性


创建一个新类型(或使用现有类型)并返回该类型的列表更安全。

它返回一个匿名类型的列表,该列表具有两个属性:
Order
MemberName
。从技术上讲,您可以返回匿名类型的列表(返回类型可以是
对象
列表
),但随后需要调用方使用反射或
动态
访问属性


创建新类型(或使用现有类型)并返回该类型的列表更安全。

这是一个匿名类型的对象列表,具有两个属性

第一个属性称为
Order
,第二个属性称为
MemberName

我想要一个函数来返回这个。然而,我不知道是什么 键入函数需要返回的值

如果您可以用这两个属性定义一个类,然后返回它们的序列,那么这将更有意义。如下图所示:

public class ClassName
{
    public TypeOfOrder Order { get; set; }
    public TypeOfMemberName MemberName { get; set; }   
}
然后声明获取订单的方法

public IEnumerable<ClassName> GetOrders()
{
   var orders = memberOrders.Join(members, 
                                  x => x.MemberID, 
                                  y => y.MemberID, 
                                 (x,y) => new ClassName 
                                 { 
                                     Order = x,
                                     MemberName = y.MemberName 
                                 }).OrderByDescending(x => x.Order.MailingDate);           
    return orders;
}
public IEnumerable GetOrders()
{
var orders=memberOrders.Join(成员,
x=>x.MemberID,
y=>y.MemberID,
(x,y)=>新类名
{ 
订单=x,
MemberName=y.MemberName
}).OrderByDescending(x=>x.Order.MailingDate);
退货订单;
}

这是一个匿名类型的对象列表,具有两个属性

第一个属性称为
Order
,第二个属性称为
MemberName

我想要一个函数来返回这个。然而,我不知道是什么 键入函数需要返回的值

如果您可以用这两个属性定义一个类,然后返回它们的序列,那么这将更有意义。如下图所示:

public class ClassName
{
    public TypeOfOrder Order { get; set; }
    public TypeOfMemberName MemberName { get; set; }   
}
然后声明获取订单的方法

public IEnumerable<ClassName> GetOrders()
{
   var orders = memberOrders.Join(members, 
                                  x => x.MemberID, 
                                  y => y.MemberID, 
                                 (x,y) => new ClassName 
                                 { 
                                     Order = x,
                                     MemberName = y.MemberName 
                                 }).OrderByDescending(x => x.Order.MailingDate);           
    return orders;
}
public IEnumerable GetOrders()
{
var orders=memberOrders.Join(成员,
x=>x.MemberID,
y=>y.MemberID,
(x,y)=>新类名
{ 
订单=x,
MemberName=y.MemberName
}).OrderByDescending(x=>x.Order.MailingDate);
退货订单;
}

如果您使用的是Visual Studio,将鼠标悬停在
var
上会生成一个解释所有问题的工具提示。如果您使用的是Visual Studio,将鼠标悬停在
var
上会生成一个解释所有问题的工具提示。您没有回答实际问题,“我想要一个函数来返回这个。但是,我无法确定函数需要返回的是哪种类型”。OP应该使用哪种返回类型?您没有回答实际问题,“我希望函数返回此值。”。但是,我无法确定函数需要返回什么类型“。OP应该使用什么返回类型?很好,谢谢。希望这一次调用没有自定义类型,但是。。。“需要”以及所有这些。@mattshower自定义类型将扮演另一个重要角色:通过其名称和属性名称表达类型及其包含的内容。匿名类型无法做到这一点。我刚刚重新阅读了自己的评论,意识到我的思想一定是在没有手指的情况下偏离了正轨。我将删除它们,因为它们不会添加任何内容。如果您只在一个位置使用该函数,可能不需要将其作为单独的函数:)太好了,谢谢。希望这一次调用没有自定义类型,但是。。。“需要”以及所有这些。@mattshower自定义类型将扮演另一个重要角色:通过其名称和属性名称表达类型及其包含的内容。匿名类型无法做到这一点。我刚刚重新阅读了自己的评论,意识到我的思想一定是在没有手指的情况下偏离了正轨。我将删除它们,因为它们不添加任何内容。如果只在一个位置使用该函数,可能不需要将其作为单独的函数:)