c# - IList<T> 作为泛型返回

标签 c# asp.net list generics

我是编码的初学者,我正在尝试创建一个搜索引擎,但有一部分我不知道如何解决它返回一个 IList 作为通用,

public IList<T> Search<T>(string textSearch)
{

    IList<T> list = new List<T>();

    var result = new DataTable();
    using (Analyzer analyzer = new PanGuAnalyzer())
    {
        var queryParser = new QueryParser(Version.LUCENE_30, "FullText", analyzer);

        queryParser.AllowLeadingWildcard = true;

        var query = queryParser.Parse(textSearch);

        var collector = TopScoreDocCollector.Create(1000, true);

        Searcher.Search(query, collector);

        var matches = collector.TopDocs().ScoreDocs;


        result.Columns.Add("Title");
        result.Columns.Add("Starring");
        result.Columns.Add("ID");

        foreach (var item in matches)
        {
            var id = item.Doc;
            var doc = Searcher.Doc(id);

            var row = result.NewRow();

            row["Title"] = doc.GetField("Title").StringValue;
            row["Starring"] = doc.GetField("Starring").StringValue;

            row["ID"] = doc.GetField("ID").StringValue;

            result.Rows.Add(row);

        }
    }
    return result;
}

但是在这段代码中,我无法返回结果,它说无法将类型“Data.DataTable”隐式转换为“Generic.IList”,存在显式转换。那么我该如何解决呢?

最佳答案

我猜你不想支持泛型,因为它没有意义而且不可能。你有一个类,例如 Film , 然后返回 List<Film> , 你不需要 DataTable :

public IList<Film> SearchFilms(string textSearch)
{
    IList<Film> list = new List<Film>();
    using (Analyzer analyzer = new PanGuAnalyzer())
    {
        var queryParser = new QueryParser(Version.LUCENE_30, "FullText", analyzer);
        queryParser.AllowLeadingWildcard = true;
        var query = queryParser.Parse(textSearch);
        var collector = TopScoreDocCollector.Create(1000, true);

        Searcher.Search(query, collector);
        var matches = collector.TopDocs().ScoreDocs;

        foreach (var item in matches)
        {
            var film = new Film();

            var id = item.Doc;
            var doc = Searcher.Doc(id);

            film.Title = doc.GetField("Title").StringValue;
            film.Starring = doc.GetField("Starring").StringValue;
            film.ID = doc.GetField("ID").StringValue;

            list.Add(film);
        }
    }
    return list;
}

关于c# - IList<T> 作为泛型返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43933072/

相关文章:

c# - 烛台多个 Y 值

java - 验证用户从文本框输入的内容#

c# - 如何根据 asp.net 中的分辨率以编程方式创建填充客户端浏览器的按钮列表

html - 在 MVC razor 中显示来自模型的列表

c# - 数据类型 text 和 varchar 在等于运算符中不兼容

c# - 将数据列添加到数据表

c# - 我如何选择抽象类或接口(interface)..?

c# - 静态变量生命周期和应用程序池回收

Python如何用字典中的值替换一个列表中的值?

c - C 错误中的链表 -- Invalid Initalizer 错误