>

다음 열이있는 테이블 클라이언트가 있습니다

id  first_name  last_name  clientid
1   tom         saver      1590
2   john        saver      1590
3   help        Desk       0
4   tom         saver      0
5   hello       world      1590

LINQ를 사용하여 이와 같은 새 목록을 반환하고 싶습니다

full_name    assClientids
tom saver    1590, 0
john saver   0
help desk    0
hello world  1590

LINQ에서 전체 이름을 사용하여 그룹화 할 수 없습니다

  • 답변 # 1

    보여줄 빠른 콘솔 앱을 작성했습니다. 아래 수업을 참조하면 원하는 것을 얻을 수 있습니다.

    public class DbViewModel
    {
             public long TotalClients { get; set; }
        public long FilteredCLients { get; set; }
        public List<Client> Clients{ get; set; }
        public List<int> AssociatedClientIds { get; set; }
    }
    public class Client
    {
        public Client() {}
        public ClientLink ClientLink { get; set; }
        public const string LastNameDisplayName = "Last Name";
        public const int    LastNameMaxLength    =  100;
        public const string LastNameMaxLengthStr = "100";
        //[MaxLength(LastNameMaxLength)]
        public string LastName { get; set; }
        public const string FirstNameDisplayName = "First Name";
        public const int    FirstNameMaxLength    =  30;
        public const string FirstNameMaxLengthStr = "30";
        //[MaxLength(FirstNameMaxLength)]
        public string FirstName { get; set; }
        public const string MiddleNameDisplayName = "Middle Name";
        public const int    MiddleNameMaxLength    =  30;
        public const string MiddleNameMaxLengthStr = "30";
        //[MaxLength(MiddleNameMaxLength)]
        public string MiddleName { get; set; }
        public const string SuffixDisplayName = "Suffix";
        public const int    NameSuffixMaxLength    =  10;
        public const string NameSuffixMaxLengthStr = "10";
        //[MaxLength(NameSuffixMaxLength)]
        public string NameSuffix { get; set; }
    
        public string FullName
        {
            get
            {
                return NameFormatter.Format(LastName, FirstName, MiddleName, NameSuffix);
            }
        }
    
    }
    public class ClientLink  
    {
        public long ClientId { get; set; }
        private List<ClientAddress> address = new List<ClientAddress>();
        public ClientLink()
        {
        }      
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<DbModel> dbModels = DbModel.GetModels();
            List<DbViewModel> viewModels = dbModels.GroupBy(x => x.first_name.ToLower() + ' ' + x.last_name.ToLower()).Select(fullNameGrouping =>
                new DbViewModel()
                {
                    full_name = fullNameGrouping.Key,
                    clientIds = fullNameGrouping.Select(x => x.clientId).ToList()
                }).ToList();
            Console.ReadKey();
        }
    }
    
    

  • 답변 # 2

    이것이 당신의 Client 라고 가정합니다  수업

    public class Client
    {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int ClientID { get; set; }
    }
    
    

    우리는 GroupBy 를 할 수있다  연결된 성 및 이름에 대해

    var clients = new List<Client>
    {
        new Client() { ID = 1, FirstName = "Tom", LastName = "Saver", ClientID = 1590 },
        new Client() { ID = 2, FirstName = "John", LastName = "Saver", ClientID = 1590 },
        new Client() { ID = 3, FirstName = "Help", LastName = "Desk", ClientID = 0 },
        new Client() { ID = 4, FirstName = "Tom", LastName = "Saver", ClientID = 0 },
        new Client() { ID = 5, FirstName = "Hello", LastName = "World", ClientID = 1590 }
    };
    var groupByFullName = clients.GroupBy(x => string.Concat(x.FirstName, " ", x.LastName));
    
    

    지금 당신의 groupByFullName  컬렉션은 전체 이름으로 그룹화됩니다.

  • 이전 php - 별도의 컨트롤러 방법으로 Symfony Access ajax JSON 응답
  • 다음 glibc - libc symbol 테이블의 vfprintf 크기가 너무 큰 이유는 무엇입니까?