У меня есть следующий класс на С#, и я пытаюсь найти отдельный список элементов. В списке 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 элементов.
Единственная разница в том, что второе выражение анонимно, а первое типизировано.
Мне интересно понять это поведение.
Благодарю вас!
Я считаю, что мой вопрос не дублирует упомянутый вопрос, потому что: Я спрашиваю здесь не о том, как получить отдельный список. Я спрашиваю, почему типизированные и анонимные данные возвращают разные результаты.