将NHibernate IList转换为C#中的List

时间:2011-04-28 14:44:21

标签: c# nhibernate list ilist

我有NHibernate IList。我想转换为List。请帮帮我。

这是我的代码

IList<Tag> list = Tag.GetAll();

我想将此转换为列表

public class CategoryTag
{
    public int ID { get; set; }
    public string TagName { get; set; }

    public CategoryTag()
    {

    }

    public List<CategoryTag> GetCategoryTagList()
    {
         IList<Tag> list = Tag.GetAll();

         // How do I return Tag as List?

        return tagList;
    }
}

更新

我想更新我的问题,因为我的问题没有得到很好的解释。

以下是我将其传递给jQuery UI Autocomplete的代码:

[WebMethod]
    public IList<Tag> FetchTagList(string tag)
    {
        var ctag = new List<Tag>(Tag.GetAll())
            .Where(m => m.TagName.ToLower().StartsWith(tag.ToLower()));
        return ctag.ToList();
    }

我收到以下错误:

无法序列化接口System.Collections.Generic.IList`1 [[QuestionCenter.Domain.Tag,QuestionCenter.Domain,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]。

任何将我的IList传递给JSON的解决方案都会对我有所帮助。谢谢。

5 个答案:

答案 0 :(得分:2)

使用LINQ:

return tagList.ToList();

答案 1 :(得分:2)

使用.ToList()扩展方法:

return list.ToList()

答案 2 :(得分:1)

您需要将返回类型更改为Tag []并使用ToArray()而不是ToList()。 IIRC,你不能在网络方法中序列化IList。

答案 3 :(得分:0)

var myList = Tag.GetAll()
                 .ConvertAll(tag => new CategoryTag{ Id = tag.Id, XXX = tag.YYY})
                 .ToList();

<强>更新

根据您对回答的评论,我会改用AutoMapper

答案 4 :(得分:0)

返回Tag.GetAll()。ToList()不适合你吗?