IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items.Add()
Linq を使用してリストをドロップダウンに追加する方法がわかりません。ありがとう。
あなたは使用AddRange
方法:
var list = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items.AddRange(list.ToArray());
以前は 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);
}
または、メソッドでデータの整合性を既にチェックしている場合は、単に次のように言うことができます。
ddlReportFavorite.Items.AddRange(reportService.GetReportFavorites(userId));
使用しているドロップダウン コントロールに応じて、次のいずれかが機能します。
アイテムを次のように設定できる場合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 であると仮定します。もちろん、独自のプロパティを使用してください
は2 つの を結合IEnumerable<T>
する方法で拡張されます。これは、キャストせずに、よりきれいな方法です。Union<T>
IEnumerable<T>
ToList()
var reportFavoriteList = reportService.GetReportFavorites(userId);
ddlReportFavorite.Items = ddlReportFavorite.Items.Union(reportFavoriteList);
ddlReprotFavorite is an UI control and its
Items property represent a set of controls as well you ca
n は、基になるビジネス エンティティから Items コレクションを自動的に作成する DataSource プロパティを使用する代わりに、ビジネス エンティティを直接追加しないためです。
IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);
ddlReportFavorite.DataSource = list;