【发布时间】:2017-06-22 17:26:01
【问题描述】:
我在 C# 中有以下课程,我正在尝试查找不同的项目列表。 该列表有 24 个元素。
public enum DbObjectType
{
Unknown,
Procedure,
Function,
View
}
public class DbObject
{
public string DatabaseName { get; set; }
public string SchemaName { get; set; }
public string ObjectName { get; set; }
public DbObjectType ObjectType { get; set; }
}
我有两种方法,希望得到相同的结果,但我没有。
第一个表达式返回相同的列表(包括重复项)
var lst1 = from c in DependantObject
group c by new DbObject
{
DatabaseName = c.DatabaseName,
SchemaName = c.SchemaName,
ObjectName = c.ObjectName,
ObjectType = c.ObjectType
} into grp
select grp.First();
lst1 将有 24 个项目。
但是这个返回了想要的结果。
var lst2 = from c in DependantObject
group c by new
{
DatabaseName = c.DatabaseName,
SchemaName = c.SchemaName,
ObjectName = c.ObjectName,
ObjectType = c.ObjectType
} into grp
select grp.First();
lst2 将有 10 个项目。
唯一的区别是第二个表达式是匿名的,而第一个是输入的。
我有兴趣了解这种行为。
谢谢!
我相信我的问题与上述问题不重复,因为: 我在这里要问的不是如何获得不同的列表。我在问为什么 Typed 和 Anonymous 数据返回不同的结果。
【问题讨论】:
标签: c# linq anonymous-class