大致类似于foreach(var obj in from x in lst where x.Name=="AAA" select x)
    Console.WriteLine(obj.Value);
就能访问所有Name为AAA的对象。不过通常,你可以使用 Dictionary<string, T> 或者 Dictionary<string, List<T>> 来索引保存更好。

解决方案 »

  1.   

    你的需求有点想通过索引器来访问,可是List是一个顺序表,只有index,没有Name。即使你定义个MyList<T>继承自List<T>也不对,你的元素并没有Name。
    实际上,你应该给你的T定义个索引器,比如:
    public class T
        {
            public string Name { get; set; }
            public string Value { get; set; }
            public T(string _name, string _value)
            {
                Name = _name;
                Value = _value;
            }        public string this[string name]
            {
                get { return this.Value; }
            }
        }
    这样就可以通过Name来获取Value了,只对T有效,而不是List<T>。如果你想要索引的话,同样的可以用Dictionary<string,List<T>>来保存。
      

  2.   

    class Program
        {
            static void Main(string[] args)
            {
                Dictionary<string, T> dic = new Dictionary<string, T>();
                dic.Add("1111", new T("guwei", "111"));
                dic.Add("2222", new T("guwe1111i", "222"));            Console.WriteLine(dic["2222"]["guwe1111i"]);//得到222
            }
        }    public class T
        {
            public string Name { get; set; }
            public string Value { get; set; }
            public T(string _name, string _value)
            {
                Name = _name;
                Value = _value;
            }        public string this[string name]
            {
                get
                {
                    if (name == Name)
                    {
                        return Value;
                    }
                    throw new Exception("not found...");
                }
            }
        }
      

  3.   

    Console.WriteLine("{0}",Tlist.Single(x => x.Name == "AAA").Value);