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

2022-11-14T20:54:11+00:00