我正在进行即席查询以获取一组ID,每个ID都转到表适配器的查询,填充行。
但是,除了在表适配器上使用ClearBeforeFill属性之外,我无法找出任何其他方法来清除。
所有这些都相当于有效的代码,但我觉得这有点像黑客。
有谁知道这样做的正确/更好的方法? (注意:我知道内联SQL并不理想)
var db = new Data.PRDataDataContext();
verifiedLineItemsTableAdapter.ClearBeforeFill = true;
bool flag = true;
foreach (var affid in db.ExecuteQuery<int>(
@"
SELECT Item.affid
FROM dbo.Item INNER JOIN
dbo.Affiliate ON dbo.Item.affid = dbo.Affiliate.affid
WHERE Affiliate.name={0}
UNION
SELECT affid
FROM dbo.Publisher
WHERE name={0}"
, name))
{
Console.WriteLine("got " + affid);
verifiedLineItemsTableAdapter.FillByAffId(
publisherReportDataSet1.VerifiedLineItems, affid);
if (flag)
{
verifiedLineItemsTableAdapter.ClearBeforeFill = false;
flag = false;
}
}
答案 0 :(得分:0)
我会把它分成两个独立的函数,然后加入
与此相似
List<int> getItemAffid(string Name) {....//your code here to return a list}
List<int> getPublisherAffid(string Name) {....//your code here to return a list}
然后加入他们
var SearchItemAffid = from a in getItemAffid(<your var>) select a;
var SearchedPublisherAffid = from a in getPublisherAffid(<your var>) select a;
var Combined = SearchedPublisherAffid.Union(SearchItemAffid);
编辑:然后您可以将其绑定到网格
DataGrid.Datasource = Combined