2012-10-11 3 views
0
IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId); 
ddlReportFavorite.Items.Add() 

Linq를 사용하여 드롭 다운 목록에 목록을 추가하는 방법을 모르겠습니다. 감사.Linq를 사용하여 목록 항목을 추가하는 방법

+3

향후 참조를 위해 자세한 정보를 제공하면 더 나은 답변을 얻을 수 있습니다. 어떤 UI 기술을 사용하고 있습니까? WPF, WinForms, Silverlight, ASP.NET WebForms, ASP.NET MVC? 이 모든 것들에는 다른 통제가 있습니다. –

+0

'ddlReportFavorite.Items'의 유형은 무엇입니까? – sll

+0

@ sll, 이전에 IEnumerable로 넣었습니다. 이제 IList로 바뀌 었습니다. 그것은 지금 잘 작동 중입니다. 감사합니다. –

답변

1

사용하는 드롭 다운 제어에 따라,이 중 하나는 일할 수 :

를 그것의 항목가 IEnumerabe<ReportFavourite>로 설정 될 수있는 경우 :

ddlReportFavorite.Items = reportService.GetReportFavorites(userId); 

항목이 AddRange 메서드를 구현하는 경우 :

LINQ이 할 수있는 좋은 도구가 아니기 때문에 이러한,
foreach(var reportFavourite in reportService.GetReportFavorites(userId)) 
    ddlReportFavorite.Items.Add(reportFavourite); 

어느 이러한 방법의

정말 "LINQ를 사용하여"입니다하지 않을 경우
ddlReportFavorite.Items.AddRange(reportService.GetReportFavorites(userId)); 

(210) 또는,. 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의 값이 있어야합니다 가정합니다. 이미 방법으로 데이터의 무결성을 검사 한 경우 물론, 자신의 속성을 사용

+0

두 경우 모두 잘못된 인수가 표시됩니다. 감사. –

+0

마지막 옵션은 항상 정상적으로 작동해야합니다. – Jens

+0

나는 또한 마지막 옵션을 시도했다. 다시 말하지만, 'system.web.ui.webcontrols.listitemCollection.add (system.web.ui.webcontrols.listitemCollection) '에 잘못된 인수가 있습니다. 감사. –

3

당신에게 사용 AddRange 방법 :

var list = reportService.GetReportFavorites(userId); 
ddlReportFavorite.Items.AddRange(list.ToArray()); 
+0

잘못된 인수 문제가 나타납니다. –

1

은 또는, 당신은 단순히 말을 단지 수 :

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

잘못된 인수 문제가 발생합니다. –

0

ddlReprotFavorite is an UI control and its 이후 항목을 property represent a set of controls as well you ca N 직접 사업체를 대신 추가하지 기본 비즈니스 엔티티에서 Items 컬렉션을 자동으로 만드는 DataSource 속성을 사용합니다.

IEnumerable<ReportFavorite> list = reportService.GetReportFavorites(userId);  
ddlReportFavorite.DataSource = list; 
1

이전에는 IEnumerable로 넣었습니다. 이제 IList로 바뀌 었습니다. 지금은 잘 작동하고 있습니다. 모두에게 감사드립니다. IEnumerable<T>

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); 
    } 
0

이 방법 Union<T> 조합 두 IEnumerable<T> 년대에 의해 확장된다. 이 방법을 사용하면보다 편리합니다. 캐스팅하지 않고 ToList().

var reportFavoriteList = reportService.GetReportFavorites(userId); 
ddlReportFavorite.Items = ddlReportFavorite.Items.Union(reportFavoriteList); 
관련 문제