我有一个作业,我在库存数据从SQLite数据库中的列填充到选择器这里是我的代码
来自数据库模型
public IEnumerable<SingleSignerTable> GetItemList()
{
return _database.Query<SingleSignerTable>("SELECT * FROM [SingleSignerTable]");
}
从前端
lCategory = new Label
{
Text = "Category",
FontAttributes = Font.SystemFontOfSize(5, FontAttributes.Bold).FontAttributes,
};
lField = new Picker { Title = "Category", VerticalOptions = LayoutOptions.Start };
lField.SelectedIndexChanged += lSport_SelectedIndexChanged;
FieldOption = new List<string> { "Others", GetItemList()};
foreach (string option in FieldOption)
{
lField.Items.Add(option);
};
private string GetItemList()
{
foreach (string option in FieldOption)
{
lField.Items.Add(option);
};
}
所以我可以举例说明
其他
棒球
足球
排球
拼字游戏
WWE
在选择器端
但代码似乎无法正常工作
答案 0 :(得分:0)
首先,您应该摆脱第二个/私有GetItemList
方法。在发布时也不要将两种不同的方法命名为相同,这会让它变得混乱。我会将你的第二种方法重构为:
var items = GetItemList().ToList();
foreach (var item in items)
{
lField.Items.Add(item.SomeStringPropertyOnSingleSignerTable);
};
或
var items = GetItemList().Select(x => x.SomeStringPropertyOnSingleSignerTable)
.Distinct()
.ToList();
foreach (string option in items)
{
lField.Items.Add(option);
};
就错误而言,这是因为你的方法private string GetItemList()
没有返回字符串,但是你声明它确实存在。如果方法GetItemList
只返回一个字符串, 可能会返回IEnumerable<T>
或某种类型的集合,我就不会命名它。