>

LINQ 및 람다 표현식을 사용하여, 나는 내가 텍스트 파일로 뽑아 것을 쓰기 데이터에 노력하고 있습니다.

using (var contextDb = new TimoToolEntities())
{
    using (var writeFile = new StreamWriter(saveTo))
    {
        var randomData = contextDb.WorkCenter_Operations.Where(d =>  d.Job_Number >= 1 && d.Part_Number.Length >= 1 && d.Oper_Number >= 1 )
        .OrderBy(d => d.Oper_Number)
        .GroupBy(d =>  d.Job_Number , d => d.Part_Number ).ToList();
        foreach (var record in randomData)
        {
            Console.WriteLine(record.Job_Number + "," + record.Part_Number); // error here
        }
    }
    Console.ReadLine();
}

'IGrouping에'name '에 대한 정의가 포함되어 있지 않으며'IGrouping '유형의 첫 번째 인수를 허용하는 확장 메소드'name '을 찾을 수 없다는 오류가 발생합니다.

나는 주위를 둘러 보았다 및 객체가 익명 있다고 생각하지만, 나는이 작동하는 수정 프로그램을 찾을 수 없어했다.


  • 답변 # 1

    GroupBy 의 과부하를 사용할 때

    .GroupBy(d =>  d.Job_Number , d => d.Part_Number )
    
    

    첫 번째 람다는 키 선택기입니다 ( Job_Number 로 그룹화) )이고 두 번째는 값 선택기입니다. 당신의 record   Part_Number 의 모음이 될 것입니다   Job_Number 와 함께  열쇠로.

    이 MSDN 예제는 기본적인 사용법을 보여줍니다 :

    // Group the pets using Age as the key value 
    // and selecting only the pet's Name for each value.
    IEnumerable<IGrouping<int, string>> query =
        pets.GroupBy(pet => pet.Age, pet => pet.Name);
    // Iterate over each IGrouping in the collection.
    foreach (IGrouping<int, string> petGroup in query)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(petGroup.Key);
        // Iterate over each value in the 
        // IGrouping and print the value.
        foreach (string name in petGroup)
            Console.WriteLine("  {0}", name);
    }
    
    

    의도는 100 % 명확하지 않으므로 실제로 여러 필드로 그룹화하려는 경우 다음과 같이 다른 과부하를 사용하십시오.

    .GroupBy(d => new { d.Job_Number, d.Part_Number })
    
    
    그런 다음 당신의 record   record.Key.Job_Number 와 같은 데이터에 액세스 할 수있는 익명 키가 있습니다.

  • 이전 macos - 코코아 앱용 프레임 워크 번들의 심볼릭 링크 문제
  • 다음 java - htc m8 (601) - treeset contains (long)에서 클래스 캐스트 예외가 발생 함