LINQ: как объявить IEnumerable [AnonymousType]?
Я не обязательно рекомендую .net это ... Это своего рода подрыв .cs-file системы типов, но вы можете c#.net сделать это:
1) измените подпись linq метода, чтобы вернуть IEnumerable
(не c# общий)
2) добавить помощника .net cast by example:
public static class Extensions{
public static IEnumerable CastByExample(
this IEnumerable sequence,
T example) where T: class
{
foreach (Object o in sequence)
yield return o as T;
}
}
3) затем вызовите метод csharp примерно так:
var example = new { Text = "", ItemId = 0, Path = "" };
foreach (var x in SeachItem(ids).CastByExample(example))
{
// now you can access the properties of x
Console.WriteLine("{0},{1},{2}", x.Text, x.ItemId, x.Path);
}
Готово.
Ключом c#.net к этому является тот факт, что language-integrated-query если вы создадите анонимный dotnet тип с тем же порядком, типами language-integrated-query и именами свойств в двух csharp местах, типы будут использоваться .net-framework повторно. Зная это, вы можете linq-query-syntax использовать дженерики, чтобы linq избежать отражения.
Надеюсь, это .net-framework поможет Алекс
c#
.net
linq
LINQ: как объявить IEnumerable [AnonymousType]?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.