在跨平台 xamarin 项目(iOS 和 Android)中使用 c# 从查询列表中检索数据时面临参数异常错误



在跨平台 Xamarin 项目(iOS 和 Android(中使用 C# 从查询列表中检索数据时出现面对参数异常错误。我正在尝试从 Azure(云(上的简单表中检索数据。这是我的代码

try
{
var client = new MobileServiceClient("https://eg.azurewebsites.net");
IMobileServiceTable<Reg> regTable = client.GetTable<Reg>();
Reg reg = new Reg();
string imail = uemail2.Text.ToString();
// This query to seach email
var email1 = await regTable
.Where(Reg => Reg.email.ToString() == imail)
.Select(email => email.Text.ToString())
.ToListAsync();
notice3.Text = email1[0].ToString();
}
catch (ArgumentException ex)
{
notice.Text = "Arguments Error" + ex.Message + ex.StackTrace + ex.HelpLink + ex.Source;
}

错误详细信息

指数超出范围。必须为非负数且小于 集合。参数名称:索引位于 System.ThrowHelper.ThrowArgumentOutofRange_IndexException.... ...//续前来源 = mscorlib

提前致谢

我更新的查询:

public async Task<ObservableCollection<Reg>> GetTodoItemsAsync(bool syncItems = false)
{
var client = new MobileServiceClient("https://eg.azurewebsites.net");
IMobileServiceTable<Reg> regTable = client.GetTable<Reg>();
Reg reg = new Reg();
string imail= uemail2.Text.ToString();
IEnumerable<Reg> items = await regTable
.Where(email=> email.Text.ToString() == imail)
.ToEnumerableAsync();
return new ObservableCollection<Reg>(items);
}
private async void v_OnClicked(object sender, EventArgs e)
{
var client = new MobileServiceClient("https://eg.azurewebsites.net");
IMobileServiceTable<Reg> regTable = client.GetTable<Reg>();
Reg reg = new Reg();
string imail = uemail2.Text.ToString();
await GetTodoItemsAsync();
items email3 = new items();

vnotice2.Text = email3.ToString();
}

似乎email1是空的,因此它无法在列表中找到第一个元素,并且无法在异常的情况下查询索引。 在访问该列表的任何元素之前,应验证该列表。

if(email1.Count > 0)
notice3.Text = email1[0].ToString();

获得空 email1 的可能原因可能是 where 子句中的字符串比较,您应该忽略大小写并比较字符串,除非您确定比较中的两个参数具有相同的大小写。此外,如果您只想获取一封电子邮件,则应使用FirstOrDefaultAsync。修改后的查询将如下所示。

notice3.Text = await regTable
.Where(Reg => Reg.email.Equals(imail, StringComparison.OrdinalIgnoreCase))
.Select(email => email.Text.ToString()).FirstOrDefaultAsync<string>()

相关内容

  • 没有找到相关文章

最新更新