获取列表<;字符串>;列表<;T>;
本文关键字:gt lt 列表 字符串 获取 | 更新日期: 2023-09-27 18:28:39
我目前有一个由以下类组成的List<T>
:
int id { get; set; }
string title { get; set; }
string description { get; set; }
我想创建一个仅所有标题在列表中的List<string>
哪种方法是最好的性能?
编辑"我的描述"字段平均2k个字符。。。我不希望这只会让获得冠军的速度减慢。
第2版我使用MVC的代码优先(实体框架)。List<T>
存储在_context中,我从中查询以获取数据。
第3版如果可能的话。。有没有办法获取标题和ID?
我想创建一个仅包含列表中所有标题的
List<string>
您可以通过Select
使用投影。
var list = new List<SomeClass>();
var titleList = list.Select(x => x.title).ToList();
有关LINQ扩展方法的更多信息,请参阅C#中的LINQ入门。
如果可能的话。。有没有办法获取标题和ID?
您可以使用匿名类型将所有三个属性放在一个列表中:
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
语句,但这是一个折衷方案,您应该通过基准测试来评估,因为在大多数情况下,差异可以忽略不计。
微基准
听起来像是在使用实体框架,在这种情况下,您不会从List<T>
创建List<string>
,而是直接从_context
:查询List<string>
var titles = _context.MyTable.Select(x => x.title).ToList();
是的,你可以把标题和id放在一起:
var titleAndIds = _context.MyTable.Select(x => new{ x.title, x.id}).ToList();
这为您提供了一个List<T>
,其中T
是一个匿名类型,包括属性title
和id
。
list.Select(o => o.title).ToList();
其中list
是泛型类型的List<T>
。