现在我有一个非常简单的查询,它会提取具有字符串和特定日期范围的条目。
EventQuery eQuery = new EventQuery(calendarInfo.Uri.ToString());
eQuery.Query = "Tennis";
eQuery.StartDate = startDate;
eQuery.EndDate = endDate;
EventFeed myResultsFeed = _service.Query(eQuery);
查询后,myResultsFeed将包含一个atomEntryCollection。每个atomEntry都有一个Title。我设置它的方式,可能有多个具有相同标题的条目。
我希望我的Query能够选择独特的标题。这可能吗?
我假设我可以使用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 :(得分:3)
我不认为您尝试使用Google Data API做什么。 但是,根据@Fueled的答案,如果你需要一个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());
答案 1 :(得分: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
的集合。我想你可以在字典中将它们链接在一起。
不是最佳的,但应该有效。