我在View上使用OrderBy调用EWS FindItems()方法。如果我使用各种ItemSchema。*值(例如ItemSchema.DisplayTo,ItemSchema.Importance,ItemSchema.Subject),则会以正确的顺序返回结果。
但是,如果我希望结果按EmailMessageSchema.From排序,因为结果是奇怪的顺序,我无法理解,并且我的用户无法接受。
正确排序:ItemSchema.Subject
ItemView view = new ItemView(20, 0, OffsetBasePoint.Beginning);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.OrderBy.Add(ItemSchema.Subject, SortDirection.Ascending);
var findResults = service.FindItems(new FolderId(emails.CompositeUniqueFolderId), view);
排序不正确:EmailMessageSchema.From
ItemView view = new ItemView(20, 0, OffsetBasePoint.Beginning);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.OrderBy.Add(EmailMessageSchema.From, SortDirection.Ascending);
var findResults = service.FindItems(new FolderId(emails.CompositeUniqueFolderId), view);
奇怪'来自'顺序:
如果按顺序降序,则按顺序降序。电子邮件#6和#7具有与#2不同的SMPT地址。查看SMTP地址时,模式不明确。结果似乎按Address.MailboxType分组。这是我能看到的唯一一种模式。
如何通过EmailMessageSchema.From正确排序FindItems()结果?
答案 0 :(得分:5)
From和Sender属性是复杂属性(例如,包含多个属性)。您最好只使用Extended属性来定制结果,例如,如果您想根据发件人名称订购结果,请使用pidtagSenderName属性,例如
ExtendedPropertyDefinition Pr_Sender_Name = new ExtendedPropertyDefinition(0x0C1A, MapiPropertyType.String);
ItemView view = new ItemView(20, 0, OffsetBasePoint.Beginning);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.PropertySet.Add(Pr_Sender_Name);
view.OrderBy.Add(Pr_Sender_Name, SortDirection.Ascending);
干杯 格伦