2010-12-12 12 views
4

今は文字列と特定の日付範囲を持つエントリをプルアップする非常に簡単なクエリがあります。Googleカレンダーからの別のイベントの照会

EventQuery eQuery = new EventQuery(calendarInfo.Uri.ToString()); 

    eQuery.Query = "Tennis"; 
    eQuery.StartDate = startDate; 
    eQuery.EndDate = endDate; 

    EventFeed myResultsFeed = _service.Query(eQuery); 

クエリの実行後、myResultsFeedにはatomEntryCollectionが含まれます。各atomEntryにはタイトルがあります。私はそれをセットアップした方法で、同じタイトルの複数のエントリが存在する可能性があります。

私のクエリがユニークなタイトルを選択できるようにしたいと思います。これは可能ですか?

Link to the API Docs

は私がWHEREオブジェクト

Where x = new Where(); 
x.yadayada(); 

を使用できるという仮説を立てたが、それは私も.extraparametersを模索してい_service.Query()

に渡すことはできませんオブジェクト。このようなことは可能でしょうか?

「部分応答」機能を見ると
eQuery.ExtraParameters = "distinct"; 

..

http://code.google.com/apis/gdata/docs/2.0/reference.html#PartialResponse

それはかなり有望に見える...

+0

提案:Google Apps APIフォーラムを尋ねてみましたか?あなたは確かにそこに答えを得るかもしれません:http://www.google.com/support/forum/p/apps-apis?hl=en。 – Fueled

答えて

0

それはおそらくあなたが探していた解決策ではないのですが、あなたは持っているので、手元にAtomEntryCollection(この行の下にはIEnumerable<T>が実装されています)、LINQを使用して異なるタイトルを取得することができます。

EventFeed feed = service.Query(query); 

var uniqueEntries = 
    (from e in feed.Entries 
    select e.Title.Text).Distinct(); 

そして簡単なforeachとそれらをループ:

foreach (var item in uniqueEntries) 
{ 
    Console.WriteLine(item); 
} 

しかし、その後、あなただけのイベントのタイトルを表すstringの収集、およびないAtomEntryのコレクションを持っています。私はあなたが一緒に辞書にリンクすることができたと思います。 最適ではありませんが、機能するはずです。

+0

私の場合、私はたくさんのCalendarEntriesを持っています。私はそれらをすべて降ろす必要はありませんでした。 – KevinDeus

3

私はあなたがしようとしていることはGoogle Data APIを使用して可能だと思いません。 しかし、あなたはAtomEntryのコレクションが必要な場合は@Fueledの答えになると、あなたはこのようなことをすることができます。

// Custom comparer for the AtomEntry class 
class AtomEntryComparer : IEqualityComparer<AtomEntry> 
{ 
    // EventEntry are equal if their titles are equal. 
    public bool Equals(AtomEntry x, AtomEntry y) 
    { 
     // adjust as needed 
     return x.Title.Text.Equals(y.Title.Text); 
    } 

    public int GetHashCode(AtomEntry entry) 
    { 
     // adjust as needed 
     return entry.Title.Text.GetHashCode(); 
    } 
} 

EventFeed eventFeed = service.Query(query) 

var entries = eventFeed.Entries.Distinct(new AtomEntryComparer()); 
+0

ええ、私は並べ替えるデータがたくさんあります。あなたの答えのうちの「私は思っていない」のようなものが、私たちが得る最も近いものになると思われます。 – KevinDeus

関連する問題