0

ドロップダウンリストに表示するselectlistitemsを生成するための次のコードがあります。

public static IEnumerable<SelectListItem> ToSelectListItems(this IEnumerable<BlogCategory>    categories, int selectedId)
    {
        return categories.OrderBy(category => category.Category)
            .Select(category => new SelectListItem
            {
                Selected = (category.ID == selectedId),
                Text = category.Category,
                Value = category.ID.ToString()
            });
    }

このヘルパークラスを使用して、BlogCategory以外のリストアイテムを生成したいと思います。どうすればこれを達成できますか?

4

2 に答える 2

3

ルックアップ エンティティの基本クラスを作成できます。

public class BaseEntity
{
   public int Id {get;set;}
   public string Title {get;set;}
}

public class Category : BaseEntity
{
   //Category fields
}

public class Blog : BaseEntity
{
   //Blog fields
}  

public static IEnumerable<SelectListItem> ToSelectListItems(this IEnumerable<BaseEntity> entityList, int selectedId)
{
    return entityList.OrderBy(q => q.Title)
        .Select(q => new SelectListItem
        {
            Selected = (q.Id == selectedId),
            Text = q.Title,
            Value = q.Id.ToString()
        });
}
于 2012-07-20T13:24:21.187 に答える
2

ユルゲン、

他のリスト項目がすべてBlogCategoryと同じ構造に準拠していることを意味していると仮定すると、ヘルパーで具象クラスではなくインターフェイスを使用できます。

これがどのように見えるかを次に示します。

public interface ICategory
{
    int ID { get; set; }
    string Category { get; set; }
}

public class BlogCategory : ICategory
{
    public int ID { get; set; }
    public string Category { get; set; }
} 

public class PostCategory : ICategory
{
    public int ID { get; set; }
    public string Category { get; set; }
} 

などなど。その後、次の行に沿って既存のヘルパー クラスを使用して、必要に応じてこのインターフェイスに対して他のクラスを使用します。

public static IEnumerable<SelectListItem> ToSelectListItems
    (this IEnumerable<ICategory> categories, int selectedId)
{
    return categories.OrderBy(category => category.Category)
        .Select(category => new SelectListItem
        {
            Selected = (category.ID == selectedId),
            Text = category.Category,
            Value = category.ID.ToString()
        });
}

楽しい...

于 2012-07-20T13:34:07.567 に答える