Это связано с моим вопросом на Забавно (?) С выражениями Linq в методах расширения , но это скорее абстракция части, которую я пытаюсь понять.Я действительно испытываю трудности с тем, чтобы обернуть свой мозг вокруг этой концепции.
Учитывая объект, определенный следующим образом:
public class item
{
public int itemId { get; set; }
public string itemName { get; set; }
public string itemDescription { get; set; }
}
и IEnumerable<item> foo
,
Допустим, яЯ хочу написать метод расширения так, чтобы выражение
foo.GetFullDescription(x => x.itemId.ToString() + "(" + x.itemName + ")")
было равно IEnumerable<string>
, содержащему связанные элементы, как определено в лямбда-выражении.Например, если мой foo
объект содержал ровно один item
объект, например, так:
{
fooItem.itemId = 1
fooItem.itemName = "foo"
fooItem.itemDescription = "fooDescription"
}
... и я присвоил переменную результату метода расширения следующим образом:
var bar = foo.GetFullDescription(x => x.itemId.ToString() + "(" + x.itemName + ")");
... Я бы получил bar
как IEnumerable<string>
с одним элементом, и этот элемент будет равен 1(foo)
.
Как бы я написал этот метод расширения?Первая часть относительно проста:
public static IEnumerable<string> GetFullDescription(this IEnumerable<item> target, <some expression?> expr){
}
Некоторая помощь будет принята с благодарностью.Простые объяснения были бы очень признательны.