获取List <t> </t> </string>中的List <string>变量

时间:2013-08-21 13:06:11

标签: c# asp.net-mvc list ef-code-first

我目前有一个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?

3 个答案:

答案 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语句,但这是一个权衡,你应该通过基准测试来评估,因为在大多数情况下差异可以忽略不计。

Microbenchmark

答案 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>是一种包含属性Ttitle的匿名类型。

答案 2 :(得分:4)

list.Select(o => o.title).ToList();

其中list是您的通用类型的List<T>