2010-12-12 44 views
4

現在我有一個非常簡單的查詢,可以查看包含字符串和特定日期範圍的條目。查詢谷歌日曆中的不同事件

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

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

    EventFeed myResultsFeed = _service.Query(eQuery); 

查詢後,myResultsFeed將包含一個atomEntryCollection。每個atomEntry都有一個標題。我設置它的方式可能會有多個條目具有相同的標題。

我希望我的查詢能夠選擇UNIQUE標題。這可能嗎?

Link to the API Docs

我猜測,我可以用一個WHERE對象

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

,但它不能被傳遞給_service.Query()

我還在探索.extraparameters目的。是否有可能做這樣的事情?

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 = zh_CN。 – Fueled 2010-12-23 00:07:07

回答

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 2010-12-23 05:01:50

3

我不認爲你想要做什麼可以使用谷歌數據API。 但是,如果你需要一組AtomEntry,你可以做這樣的事情。

// 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 2010-12-23 05:04:17