Выражение привязки лямбда для массиваC#

Место общения программистов C#
Ответить
Anonymous
 Выражение привязки лямбда для массива

Сообщение Anonymous »

В настоящее время я работаю над написанием предложения динамического выбора с использованием лямбда-выражений и застрял на этапе, когда мне приходится иметь дело с вложенными коллекциями.
Например:

Код: Выделить всё

class A
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public IEnumerable Property3 { get; set; }
}

class B
{
public string Prop1 { get; set; }
public int Prop2 { get; set; }
}
У меня есть классы A и B, как показано выше, и я получаю коллекцию A, однако, поскольку эти данные внутри A будут привязаны к сетке, все свойства не требуются. Это похоже на зависимость от просмотра. Представление определяет поля для отображения. Поэтому я создаю объект «на лету» и добавляю к нему необходимые свойства. Это я сделал, используя лямбда-выражение, как показано ниже:

Код: Выделить всё

Expression.Bind(p, Expression.PropertyOrField(entityExpression, p.Name))
Это работает, если мне нужно выбрать только Property1 и Property2 из класса A, однако, если я хочу Property3, который является коллекцией, это не будет работать, поскольку я создаю тип на лету и просто добавляю необходимые ему свойства. Следовательно, во время выполнения у меня будет сценарий типа

Код: Выделить всё

IEnumerable => RuntimeType2 { string Prop1 {get;set; }
IEnumerable =>
RuntimeType1 { string Property1 {get;set;
IEnumerable Property3 {get;set;} }
Выше приведен сценарий, которого я хочу достичь. В простом случае я могу это сделать, однако изо всех сил пытаюсь привязаться к коллекции.
Надеюсь, у моей проблемы достаточно описания. Если вам нужна дополнительная информация, пожалуйста, ответьте. Любые указатели будут полезны.

Подробнее здесь: https://stackoverflow.com/questions/149 ... -for-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»