gpt4 book ai didi

c# - IList 作为泛型返回

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:47 25 4
gpt4 key购买 nike

我是编码的初学者,我正在尝试创建一个搜索引擎,但有一部分我不知道如何解决它返回一个 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/

25 4 0