[大家好,我正在尝试使用linq to Sql从数据库中检索值,这是我的代码。我从WPF获取一个组合框值,试图从我的Microsoft sql server中检索电话号码,结果在我的txtbox中给了我这个“ System.Linq.Enumerable + WhereListIterator`1 [MultiLoc.client]”。
private void cmbIdClient_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
VehiculeDataContext data = new VehiculeDataContext();
List<client> clients = (from cli in data.clients select cli).ToList();
IEnumerable<client> tel = Enumerable.Where(clients, x => x.id_client.ToString() == cmbIdClient.SelectedValue.ToString());
txtnumerotel.Text = tel.ToString();
}
输出为System.Linq.Enumerable+WhereListIterator1[MultiLoc.client]
的原因是由于IEnumerable.ToString
仅返回对象的类型,而不返回值。另外,IEnumerable
代表值的集合,不一定代表一个值,我认为这不是您想要的。
为了解决这个问题,假设client
类看起来像:
public class client
{
public int id_client { get; set; }
public string phone_num { get; set; }
...
}
并且每个client
具有唯一的id_client
,您可以更改:
IEnumerable<client> tel = Enumerable.Where(clients, x => x.id_client.ToString() == cmbIdClient.SelectedValue.ToString());
成为:
string tel = clients.FirstOrDefault(x => x.id_client.ToString() == cmbIdClient.SelectedValue.ToString())?.phone_num ?? "<Whatever default value for no client>";