我遇到了一个我出于某种原因无法弄清楚的问题.我正在尝试编写一个连接两个表的查询,其中可能在表中找不到匹配项.如:
SELECT
Table1.IDField, Table2.IDField
FROM
Table1
LEFT OUTER JOIN
Table2 ON Table1.PersonID = Table2.PersonID
WHERE
(Table1.IDField = '12345')
AND (Table2.Category = 'Foo')
Run Code Online (Sandbox Code Playgroud)
如果没有匹配Table2,则不返回任何内容.但是,如果没有匹配并且仍然从中返回值,我需要它为该列返回NULL Table1.
我已经改变了JOIN我能想到的一切,但无济于事.
Table2.Category可以包含多个其他值,因此执行某种OR IS NULL交易将无效.
所以,如果没有匹配Table2.Category = 'Foo',我仍然需要它返回:
Table1 | Table2
----------------
12345 | NULL
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我遇到了一个我不确定如何解决的问题.我有一个方法,其中包含来自填充数据表的服务的调用,例如:
private void GetCases()
{
try
{
//Setup our criteria
Web_search_criteria myCriteria = new Web_search_criteria()
{
Keynum = 9, //Use Opening Date Key
Range_start = "20100101", //01-01-2010
Range_end = "20121223" //12-23-2013
};
//The myCases object is a datatable that is populated from the GetCasesDT() call.
int status = db.server.GetCasesDT(myCriteria, ref myCases);
}
catch (Exception ex)
{
XtraMessageBox.Show("Unable to get data: " + ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
所以,正如你所看到的,我没有办法一次抓住几个案例 - 它只是抓住了一切.
现在,我在BackgroundWorker的DoWork事件中调用了这个方法,并在其上显示另一个带有选取框进度条的表单,以便用户知道系统实际上正在执行某些操作.在那个表单上,我有一个我订阅的取消按钮.这是执行此操作的代码:
backgroundWorker1 = new BackgroundWorker()
{
WorkerSupportsCancellation = true,
WorkerReportsProgress = true …Run Code Online (Sandbox Code Playgroud) 我必须从WCF服务调用三种不同的异步方法.我有以下方法,包括所有三个调用:
private async Task CreateMultipleTasksAsync()
{
CrimcaseServiceClient client = new CrimcaseServiceClient(
new BasicHttpBinding(),
new EndpointAddress("http://192.168.1.100/FooService/FooService.svc")
);
client.GetEventCompleted += OnGotEventResult;
client.GetEventAsync(eventInfo);
client.GetLocationsCompleted += OnGotLocationsResult;
client.GetLocationsAsync();
client.GetTypesCompleted += OnGotTypesResult;
client.GetTypesAsync();
}
Run Code Online (Sandbox Code Playgroud)
完成所有三个调用后,我需要填充一些值.但是,我似乎遇到了如何等待所有三个人首先完成的问题.
我已经尝试过这样做,使用这个调用,但它仍然没有等待所有的调用完成后再继续下一段代码:
private void GrabData()
{
var task = Task.Run(async () => { await CreateMultipleTasksAsync(); });
task.Wait();
}
Run Code Online (Sandbox Code Playgroud)
任何建议都会非常感激,因为我在这一点上做了什么.
感谢大家.