6

現在List<T>、次のクラスで構成されています。

int id { get; set; }
string title { get; set; }
string description { get; set; }

リスト内のすべてList<string>のタイトルのみのを作成したい

これを行うための最良のパフォーマンスの方法はどれですか?

[説明] フィールドを編集すると、平均で 2,000 文字になります...タイトルの取得だけが 遅くなりたくありません。

Edit2 MVCのコードを最初に使用しています(Entity Framework)。これList<T>は _context に格納され、そこからクエリを実行してデータを取得します。

Edit3可能であれば..タイトルとIDを取得する方法はありますか?

4

3 に答える 3

15

List<string>リスト内のすべてのタイトルのみのを作成したい

経由で投影を使用できますSelect

var list = new List<SomeClass>();

var titleList = list.Select(x => x.title).ToList();

LINQ 拡張メソッドの詳細については、「C# での LINQ の概要」を参照してください。

可能であれば..タイトルとIDを取得する方法はありますか?

Anonymous Typeを使用して、3 つのプロパティすべてを 1 つのリストに入れることができます。

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ステートメントより優れているわけではありませんが、ほとんどの場合、違いは無視できるため、ベンチマークによって評価する必要があるトレードオフです。

マイクロベンチマーク

于 2013-08-21T13:07:03.867 に答える
8

Entity Framework を使用しているように聞こえます。その場合、List<string>から を作成せず、 から直接List<T>クエリを実行します。List<string>_context

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を含む匿名型であることがわかります。titleid

于 2013-08-21T13:20:12.377 に答える
4
list.Select(o => o.title).ToList();

ジェネリック型の はどこlistにありますか。List<T>

于 2013-08-21T13:07:07.827 に答える