[英]Simple Linq Query Not Working
我有一個簡單的函數,可以根據用戶在組合框中選擇的字符串值來過濾數據表。 如果選中了復選框,則在組合框中選擇的字符串是where子句的匹配條件。
我遇到的問題是,我只獲得一條記錄,即第一條記錄,而不是幾百條。
抱歉,我是Linq的新手,我做錯了什么?
private DataTable FilterDMRMarcIDs()
{
var tmpValue = dtDMRMarc.AsEnumerable();
if (chekbCountry.Checked)
{
tmpValue = tmpValue.Where(contact => contact.Field<string>("Country") == cbCountry.SelectedItem);
}
if (chekbState.Checked)
{
tmpValue = tmpValue.Where(contact => contact.Field<string>("State") == cbState.SelectedItem);
}
return tmpValue.CopyToDataTable<DataRow>();
} // FilterDMRMarcIDs() ...
嗯,這永遠是你錯過的愚蠢的事情。 過度指定類型永遠不會有傷害!
private DataTable FilterDMRMarcIDs()
{
var tmpValue = dtDMRMarc.AsEnumerable();
if (chekbCountry.Checked)
{
tmpValue = tmpValue.Where(contact => contact.Field<string>("Country") == (string)cbCountry.SelectedItem);
}
if (chekbState.Checked)
{
tmpValue = tmpValue.Where(contact => contact.Field<string>("State") == (string)cbState.SelectedItem);
}
return tmpValue.CopyToDataTable<DataRow>();
} // FilterDMRMarcIDs() ...
Eric Matson提供的解決方案是正確的。 ComboBox.SelectedItem返回一個Object
而contact.Field<T>
返回T
因此在您的情況下返回String
。
我建議您執行以下操作:
tmpValue.Where(contact => contact.Field<string>("State")
.Equals(Convert.ToString(cbState.SelectedItem)));
我想您要選擇值而不是選擇項目
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.