Я не уверен, действительно ли вам нужен динамический linq, чтобы делать то, что вы хотите. Просто обычный System.Linq должен обрабатывать поиск индексов позиции, а также элемент at должен работать нормально, если вы используете C # .NET 4.5 или 4.0, по моему опыту. Вот простое консольное приложение, которое должно работать нормально:
using System;
using System.Collections.Generic;
using System.Linq;
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
class Program
{
public static List<User> Users;
static void Main(string[] args)
{
Users = new List<User>
{
new User
{
FirstName = "Brett",
LastName = "M"
},
new User
{
FirstName = "John",
LastName = "Doe"
},
new User
{
FirstName = "Sam",
LastName = "Dilat"
}
};
Console.WriteLine("Should work as long as object is defined and instantiated");
Console.WriteLine(Users.ElementAt(1).FirstName);
Console.WriteLine("\nIterate Through List with Linq\n I use a string you can add to another list or whatever\n\n");
string s = "";
Users.ForEach(n => s += "Position: " + Users.IndexOf(n) + " " + n.LastName + Environment.NewLine);
Console.WriteLine(s);
Console.ReadLine();
}
}
И если вы просто хотите найти определенный объект в коллекции по свойству этой коллекции, вы можете использовать метод FindIndex:
Console.WriteLine("Index of Dilat: " + Users.FindIndex(n => n.LastName.Equals("Dilat")));
РЕДАКТИРОВАТЬ 9-27-13 для разделения строки.
Если вы хотите взять строку и разбить ее на красивый список для повторения, вы тоже можете это сделать. Вам просто нужно найти разделитель. Если у вас его нет, вам придется использовать некоторую магию регулярных выражений, которая является более сложной.
Сохраните все то же самое, но замените мой метод MAIN:
string split = "Brett,Same,John,Frank";
List<string> stringList = split.Split(',').ToList();
string s = "";
stringList.ForEach(n => s += n + Environment.NewLine);
s += "\n\nFor Observing Element at\n";
s += "John is at: " + stringList.FindIndex(n => n.Equals("John"));
s += "\n\nGetting Poco Objects assigned and listed\n";
var list = stringList.Select(u => new User
{
FirstName = u,
LastName = "Something"
}).ToList();
list.ForEach(n => s += "User: " + n.FirstName + " " + n.LastName + "At: " + list.IndexOf(n) + Environment.NewLine);
person
djangojazz
schedule
26.09.2013
User
в спискеUsers
и получить их фамилию? Или вы хотите вывести только индивидуальную фамилиюUser
в индексе 1? - person Nick DeVore   schedule 27.09.2013