简体   繁体   English

如何使用linq where子句填充xamarin.forms中的listview

[英]How to use linq where clause to fill listview in xamarin.forms

I'm working on a simple project which i want to search bar to fill a listview base on user input. 我正在开发一个简单的项目,我想搜索栏以填写基于用户输入的列表视图。 But this is the error code that shows: 但这是显示的错误代码:

Severity Code Description Project File Line Suppression State Error CS7036: There is no argument given that corresponds to the required formal parameter 'Chiefdom' 严重性代码描述项目文件行抑制状态错误CS7036:没有给出对应于所需形式参数“Chiefdom”的参数

In my sqlitehelper this what my task query. 在我的sqlitehelper中这是我的任务查询。

public Task<CommodityList> GetSearchComoditylistAsync(string Chiefdom)
{
    return db.Table<CommodityList>().Where(i => i.Chiefdom == Chiefdom).FirstOrDefaultAsync();
}

In my cs page this what I have: 在我的cs页面中,这是我所拥有的:

async void SearchBar_Pressed(object sender, EventArgs e)
{
    var comoList = await App.SQLiteDb.GetSearchComoditylistAsync();
    if (comoList != null)
    {
        lvChiefCommodity.ItemsSource = comoList;
    }
}

All what I want is when ever a user input or enter something into the search bar and hit enter key it should fill the listview according to the input. 我想要的只是当用户输入或在搜索栏中输入内容并点击回车键时,它应根据输入填充列表视图。

GetSearchComoditylistAsync has one required parameter, Chiefdom GetSearchComoditylistAsync有一个必需的参数, Chiefdom

public Task<CommodityList> GetSearchComoditylistAsync(string Chiefdom)
{
    return db.Table<CommodityList>().Where(i => i.Chiefdom == Chiefdom).FirstOrDefaultAsync();
}

but when you call it you are not passing any parameters 但是当你调用它时,你没有传递任何参数

async void SearchBar_Pressed(object sender, EventArgs e)
{
    var comoList = await App.SQLiteDb.GetSearchComoditylistAsync();

you presumably want to pass in the search string 你可能想传入搜索字符串

var search = (SearchBar)sender;
var comoList = await App.SQLiteDb.GetSearchComoditylistAsync(search.Text);

your current search function only returns ONE result. 您当前的搜索功能仅返回一个结果。 If you want to return more than that, 如果你想要返回更多,

return db.Table<CommodityList>().Where(i => i.Chiefdom.ToUpper().Contains(Chiefdom.ToUpper()).ToListAsync();

public Task> GetItemsNotDoneAsync(string Chiefdom) { return db.QueryAsync("SELECT * FROM CommodityList WHERE Chiefdom=?",Chiefdom); public Task> GetItemsNotDoneAsync(string Chiefdom){return db.QueryAsync(“SELECT * FROM CommodityList WHERE Chiefdom =?”,Chiefdom); } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM