当我使用Xamarin和sqlite创建应用程序时。我运行了一条语句,但它在模拟器屏幕中向我显示了这句话:System.Linq.Enumerable + SelectEnumerableIterator`2 [AppUI.Entries,System.String]
这是我的Entries类:
public class Entries
{
public Entries()
{
}
public Entries(string word)
{
this.word = word;
}
public Entries(string word, string wordtype, string definition)
{
this.word = word;
this.type = wordtype;
this.defn = definition;
}
public string word
{ get; set; }
public string type
{ get; set; }
public string sdex { get; set; }
public int wlen { get; set; }
public string defn
{ get; set; }
这是DatabaseManager类。函数GetDef()是我推荐的语句。
public class DatabaseManager
{
SQLiteConnection dbConnection;
public DatabaseManager()
{
dbConnection = DependencyService.Get<ISQLite>().GetConnection();
}
public string GetDef(string w)
{
return dbConnection.Table<Entries>().Where(x => x.word == w).Select(x => x.defn).ToString();
}
}
我不知道为什么会这样?请帮忙。非常感谢
答案 0 :(得分:0)
这部分查询和Linq返回一个IEnumerable
(即零个或多个Entries
对象)。
dbConnection.Table<Entries>().Where(x => x.word == w)
Linq投影的这一部分假设它只有一个Entries
对象:
.Select(x => x.defn).ToString();
因此,使用First
从枚举中获取第一条记录(或者如果没有记录,则返回null
与FirstOrDefault
):
return dbConnection.Table<Entries>()
.Where(x => x.word == w)
.FirstOrDefault()?
.defn;