为什么赢了';这个LINQ不返回一个特定的首字母吗?
我有以下LINQ:-为什么赢了';这个LINQ不返回一个特定的首字母吗?,linq,Linq,我有以下LINQ:- private static IEnumerable<AlphabetisedContact> _getGroupedContacts(int clientid) { return _getLiteContacts(clientid).GroupBy(c => c.Name[0]).Select( g => new AlphabetisedContact { Initial = g.Key, Contacts = g.ToList() }).
private static IEnumerable<AlphabetisedContact> _getGroupedContacts(int clientid)
{
return _getLiteContacts(clientid).GroupBy(c => c.Name[0]).Select(
g => new AlphabetisedContact { Initial = g.Key, Contacts = g.ToList() }).OrderBy(g => g.Initial); }
我希望第一个Initial
块包含我的A
联系人数。。。例如,如果我添加一个名为Bryn McWinkawonk
的新联系人,他会出现,但Alice Alikemen
不会
edit\u getLiteContacts()
调用使用传递的参数访问数据库:-
private static IEnumerable<LiteContact> _getLiteContacts(int clientid)
{
return _getContacts(clientid).Select(c => new LiteContact()
{ ContactId = c.ContactId, ContactType = Enum.GetName(typeof (ContactTypeObject.Type), c.Type), Name = c.Name, PrimaryContact = _marshallFirstContactDetail(c.ContactId),
Avatar = c.Avatar, UserId = c.UserId }).ToList();
}
\u marshallFirstContactDetail()
:-
\u marshallContactDetails()
:-
感谢您的帮助。好的。首先,向花时间看这个问题的人道歉。原来问题出在上面的一层,在那里发生了一些分页。在
GetGroupedContacts
(=>\u GetGroupedContacts()
)的结果上运行了一段LINQ,如下所示:-
GetGroupedContacts()。获取(1000)。跳过(1)
这很自然,总是跳过第一个结果
完成扳手Doobert签字 如果您有任何以
a
开头的联系人,就可以了-是否要添加示例数据和预期输出?@BrokenGlass已按要求更新;)还需要示例输入-您的代码应该可以工作。另外,您只显示JSON输出—您的问题可能还存在于从C#到JSON的转换中。您是否逐行查看数据“消失”的位置?public
方法访问此private
,public由WebAPI直接调用<代码>字母联系人只是一个字符和自定义对象列表。我将进行编辑以显示调用/输入的结果。\u getLiteContacts()
测试了linq部分(仅使用字符串列表和匿名类型),它工作正常。。。
private static IEnumerable<LiteContact> _getLiteContacts(int clientid)
{
return _getContacts(clientid).Select(c => new LiteContact()
{ ContactId = c.ContactId, ContactType = Enum.GetName(typeof (ContactTypeObject.Type), c.Type), Name = c.Name, PrimaryContact = _marshallFirstContactDetail(c.ContactId),
Avatar = c.Avatar, UserId = c.UserId }).ToList();
}
private static IEnumerable<Contact> _getContacts(int clientid)
{
using (var ctx = new atomicEntities())
{
var contacts = from c in ctx.Contacts
where c.ClientId == clientid
select c;
return contacts.ToList();
}
}
private static Model.Contact.ContactDetail _marshallFirstContactDetail(int contact)
{
return _marshallContactDetails(contact).FirstOrDefault();
}
private static IEnumerable<Model.Contact.ContactDetail> _marshallContactDetails(int contact)
{
using (var ctx = new atomicEntities())
{
var o = from d in ctx.ContactDetails
join cd in ctx.ContactDetailTypes on d.ContactDetailTypeId equals cd.ContactDetailTypeId
where d.ContactId == contact
select new Model.Contact.ContactDetail {Type = cd.Description, Value = d.Description};
return o.ToList();
}
}
contact_id client_id contact_name contact_type
8 22 Cain Allan 2
9 23 Bazrith Banners 2
10 22 Spencer Grep 1
12 22 Bryan Chiney 1
13 22 Dave Carter 4
15 22 Steve Tite 8
16 22 Henry Laythorpe 8
17 22 Chris Barker 8
18 22 Simon Cox 2
19 22 Russell Jacobs 1
20 22 John Wyndham 2
21 22 Isabel March 5
22 22 Bryan Billbags 2
23 22 Stu Plum 2
24 22 Pete Sorensen 7
25 22 Tom Francis 1
26 22 Rich McCormick 1
27 22 Tim Cain 4
28 22 Alex Ray-Harvey 1
29 22 Ryan Bennett 1
30 22 Alice Griswald 3
31 22 Archibald Smyth 3
32 22 Benjamin Franklin 5