我目前有一个List<T>
由以下类组成:
int id { get; set; }
string title { get; set; }
string description { get; set; }
我想在列表
中创建仅{strong>全部标题的List<string>
这是最好的表现方式吗?
修改 我的描述字段平均为2k个字符...我不希望它减慢仅获取标题。
EDIT2
我首先使用MVC的代码(实体框架)。 List<T>
存储在_context中,我从中查询以获取数据。
编辑3 如果可能..有没有办法获得标题和ID?
答案 0 :(得分:14)
我想创建列表
中所有标题的List<string>
您可以通过Select
投标。
var list = new List<SomeClass>();
var titleList = list.Select(x => x.title).ToList();
有关LINQ扩展方法的更多信息,请参阅Getting Started with LINQ in C#。
如果可能..有没有办法获得标题和ID?
您可以使用Anonymous Type将所有三个属性放在一个列表中:
var entityList = list.Select(x => new { x.title, x.id, x.description }).ToList();
这是最好的表现方式吗?
var list = new List<SomeClass>();
var titleList = new List<string>(list.Count);
foreach(var item in list)
{
titleList.Add(item.title);
}
LINQ不会胜过一个简单的foreach
语句,但这是一个权衡,你应该通过基准测试来评估,因为在大多数情况下差异可以忽略不计。
答案 1 :(得分:8)
听起来你正在使用Entity Framework,在这种情况下你不会从List<string>
创建List<T>
- 你会直接从{{1}查询List<string>
}}:
_context
是的,您可以一起获得标题和ID:
var titles = _context.MyTable.Select(x => x.title).ToList();
这会为您提供var titleAndIds = _context.MyTable.Select(x => new{ x.title, x.id}).ToList();
,其中List<T>
是一种包含属性T
和title
的匿名类型。
答案 2 :(得分:4)
list.Select(o => o.title).ToList();
其中list
是您的通用类型的List<T>
。