0
IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items.Add()

Linq を使用してリストをドロップダウンに追加する方法がわかりません。ありがとう。

4

6 に答える 6

3

あなたは使用AddRange方法:

 var list = reportService.GetReportFavorites(userId);
 ddlReportFavorite.Items.AddRange(list.ToArray());
于 2012-10-11T11:34:53.860 に答える
1

以前は IEnumerable として置きました。今、私は IList に変更しました。現在は正常に動作しています。ありがとうございます。

    int userId = workContext.CurrentUser.UserID;
    var reportFavoriteList = reportService.GetReportFavorites(userId);
    int count = reportFavoriteList.Count;

    for (int i = 0; i < count; i++)
    {
        ddlReportFavorite.Items.Add(reportFavoriteList[i].FavoriteName);
    }
于 2012-10-11T12:54:46.547 に答える
1

または、メソッドでデータの整合性を既にチェックしている場合は、単に次のように言うことができます。

ddlReportFavorite.Items.AddRange(reportService.GetReportFavorites(userId));
于 2012-10-11T11:44:40.707 に答える
1

使用しているドロップダウン コントロールに応じて、次のいずれかが機能します。

アイテムを次のように設定できる場合IEnumerabe<ReportFavourite>:

ddlReportFavorite.Items = reportService.GetReportFavorites(userId);

Items が AddRange メソッドを実装している場合:

ddlReportFavorite.Items.AddRange(reportService.GetReportFavorites(userId));

または、これらが失敗した場合

foreach(var reportFavourite in reportService.GetReportFavorites(userId))
    ddlReportFavorite.Items.Add(reportFavourite);

LINQ はこれを行うための優れたツールではないため、これらの方法はどちらも実際には「LINQ を使用する」ものではありません。LINQ は、副作用がないことを目的としています。

編集: あなたのコメントは、System.Web.UI.WebControls.DropDownList. この場合、Items コレクションはインスタンスのみを受け入れるListItemため、ReportFavourites からこれらを作成する必要があります。試す

foreach(var listItem in reportService.GetReportFavorites(userId)
                                     .Select(r => new ListItem(r.Id, r.Name))
    ddlReportFavorite.Items.Add(listItem);

ここでは、コンボ ボックスに ReportFavourite.Name が表示され、値が ReportFavourite.Id であると仮定します。もちろん、独自のプロパティを使用してください

于 2012-10-11T11:35:22.003 に答える
0

は2 つの を結合IEnumerable<T>する方法で拡張されます。これは、キャストせずに、よりきれいな方法です。Union<T>IEnumerable<T>ToList()

var reportFavoriteList = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items = ddlReportFavorite.Items.Union(reportFavoriteList);
于 2012-10-11T13:03:56.840 に答える
0

ddlReprotFavorite is an UI control and itsItems property represent a set of controls as well you can は、基になるビジネス エンティティから Items コレクションを自動的に作成する DataSource プロパティを使用する代わりに、ビジネス エンティティを直接追加しないためです。

IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);      
ddlReportFavorite.DataSource = list;
于 2012-10-11T12:49:23.610 に答える