【发布时间】:2021-08-26 15:08:46
【问题描述】:
所以我制作了一个带有搜索文本框的 Windows 表单,该文本框将返回您在数据网格中输入的字符串部分。但是,在我尝试编写以下事件时。数据网格改为显示布尔值。
代码的哪些部分使所有这些结果变为布尔值,我该如何解决这个问题?
private void txtSearch_TextChanged(object sender, EventArgs e)
{
this.dataGridView1.DataSource = null;
this.dataGridView1.Rows.Clear();
using (var context = new edeappEntities1())
{
var data = context.bookingorders
.Join(
context.addressbooks,
booking => booking.addrID,
address => address.addrID,
(booking, address) => new
{
accID = booking.accID.Contains(txtSearch.Text),
bookId = booking.bookingID.Contains(txtSearch.Text),
companyName = address.companyName.Contains(txtSearch.Text),
address = address.addressLn1.Contains(txtSearch.Text) || address.addressLn2.Contains(txtSearch.Text) ||
address.addressLn3.Contains(txtSearch.Text),
region = address.region.Contains(txtSearch.Text),
postcode = address.postcode.Contains(txtSearch.Text),
contact = address.contectName.Contains(txtSearch.Text),
phone = address.phoneNo.Contains(txtSearch.Text),
fax = address.faxNo.Contains(txtSearch.Text),
telex = address.telexNo.Contains(txtSearch.Text),
pickupTime = booking.pickupDate.Contains(txtSearch.Text)
|| booking.pickupTime.Contains(txtSearch.Text)
}
).ToList();
foreach (var db in data)
{
dataGridView1.Rows.Add(db.accID, db.bookId, db.companyName, db.address, db.region,
db.postcode, db.contact, db.phone, db.fax, db.telex, db.pickupTime);
}
}
}
我的建模结构:model1.edmx
搜索结果为布尔值:link
【问题讨论】:
-
你能发布两个实体的类的定义吗?
-
类的定义是什么意思,我该如何向您展示?
-
例如
accID = booking.accID.Contains(txtSearch.Text)这将返回一个bool是否值booking.accID包含匹配项。你到底想在这里做什么?您是否想要所有数据,但只需要其中一个字段匹配?还是您想要所有数据,但只返回包含匹配项的每一列,否则为空?还是您想要相同但带有文本索引? -
@FurukawaHikaru 由于您使用的是实体框架,因此两个数据库表都必须有一个对应的
address和booking类,这正是我所说的。无论如何,我现在已经解决了问题,请参阅我的答案。让我知道是否有帮助:)
标签: c# mysql winforms entity-framework linq