Utilizați Microsoft.Office.Interop.Outlook.Items.Find cu filtru, care ar putea conține ghilimele și apostrofuri (Programare, C#, Office Interop)

Jannik a intrebat.

Am probleme cu următorul filtru.

string filter = String.Format(
   "[Start] = '{0}' AND [Subject] = '{1}' AND [BillingInformation] = 'Test'", 
   time.ToShortDateString() + " " + time.ToShortTimeString(), subject);
return items.Find(filter) as Microsoft.Office.Interop.Outlook.AppointmentItem;

Aș dori să pot Găsi elemente, chiar dacă subiectul meu conține ghilimele și/sau apostrofuri. Am încercat cu:

string filter = string.Format(
   "[Start] = 
{0}
 AND [Subject] = 
{1}
 AND [BillingInformation] = 
Test
", 
   string.Concat(time.ToShortDateString(), " ", time.ToShortTimeString()), 
   subject);
return items.Find(filter) as Microsoft.Office.Interop.Outlook.AppointmentItem;

Din nefericire, acest lucru îmi va strica ghilimelele. Și nici măcar nu sunt sigur dacă va funcționa cu apostrofuri acum… Pare să funcționeze totuși.

Cum trebuie să definesc filtrul, astfel încât subiectul meu să poată folosi atât ghilimele, cât și apostrofuri?

Comentarii

  • Ce vreți să spuneți prin „Pare să funcționeze totuși”? Produce șirul corect, inclusiv ghilimelele, dar nu aplică corect filtrul? Produce șirul greșit, dar efectuează filtrarea corectă? –  > Por Lars Kristensen.
  • Ideea este că soluția mea pe jumătate funcțională pare să funcționeze acum pentru apostrofuri, dar nu și pentru ghilimele. –  > Por Jannik.
  • Nici soluția mea pentru ghilimele nu funcționează. –  > Por Jannik.
1 răspunsuri
Jannik

După câteva zile încercând să rezolv acest lucru:

Aceasta este soluția finală, care funcționează bine pentru mine:

string filter = String.Format(
    "[Start] = '{0}' AND [Subject] = '{1}' AND [BillingInformation] = 'Test'", 
    time.ToShortDateString() + " " + time.ToShortTimeString(),
    subject.Replace("'", "''"));
return items.Find(filter) as Microsoft.Office.Interop.Outlook.AppointmentItem;

Acest lucru va funcționa bine. Trebuie să folosiți de două ori ghilimele simple.

A mai existat o mică problemă cu spațiile de neîntrerupere. Când adăugați r sau încercați să găsiți întâlniri în Outlook, asigurați-vă că nu aveți spații de neîntrerupere. Eliminați-le,, atunci când adăugați sau filtrați elemente. Doar micul meu sfat pentru cineva cu probleme similare.