我一直在研究这个问题,所以如果我在某个地方错过了一个主题,请指出我正确的方向并接受我的道歉。
我正在对传入的DataTable执行LINQ查询,并根据完成的过滤设置新列。传入的信息是包含以下列的单行:CompanyName,CustomerID,LastName,FirstName,ContactTitle。
我的问题是,我是否过度过滤信息,以至于它不会向DGV返回任何内容,或者我做了别的错误?
我要做的是根据从DataTable传入的信息查询另一个表。这是我的疑问:
var query = (from id in IncomingOrderDetails.AsEnumerable()
from o in db.Orders
from c in db.Customers
from r in db.Regions
where (id.Field<int>("OrderID") == o.OrderID)
where (o.CustomerID == c.CustomerID)
where (c.Region == r.RegionDescription)
select new
{
CustomerID = c.CustomerID,
CompanyName = c.CompanyName,
ContactName = c.ContactName,
RegionDescription = r.RegionDescription,
Country = c.Country,
Phone = c.Phone
}).ToList();
custInfoDGV.DataSource = query;
答案 0 :(得分:0)
这一行:
where (c.Region == r.RegionDescription)
......看起来很可疑。如果c.Region = r.RegionDescription
,为什么需要引入r
?所有你用它来检索RegionDescription。
我不知道你的表,但加入两个不匹配的字段肯定会产生0条记录。 :)