위치에 따른 Linq 합계

user3755946

각 위치의 재고를 합산하는 레코드 목록을 반환하는 작업을 수행하는 다음 코드가 있습니다. 더 이상 진행하기 전에 프로그램을 정리하려고합니다. LINQ에서 동일한 작업을 수행 할 수있는 방법이 있습니까? 나는 이것이 엉망이라는 것을 알고 있으며 그것을 다듬고 싶습니다.

찾아 주셔서 감사합니다!

private static List < Stock_Paper_Record > Get_Final_List(List < Stock_Paper_Record > Finallist, List < Stock_Paper_Record > papr, List < string > Codes, List < string > locs) {
    int ii = 0;
    int totalg = 0;
    int totall = 0;
    int totalp = 0;
    decimal gsm = 0;
    decimal size1 = 0;
    decimal size2 = 0;
    int commited = 0;
    int OnOrder = 0;
    int THRESH = 0;
    int iount = 0;
    papr.Sort((x, y) => String.Compare(x.Code, y.Code));
    Finallist.Sort((x, y) => String.Compare(x.Code, y.Code));
    int ic = 0;
    int it = 0;
    List < string > ls = new List < string > ();
    List < decimal > st = new List < decimal > ();
    foreach(string s in Codes) {
        for (int iii = 0; iii < papr.Count; iii++) {
            if (s == papr[iii].Code && papr[iii].Location == "GLASGOW") {
                totalg += Convert.ToInt32(papr[iii].Stock);
                gsm = papr[iii].Grammage;
                size1 = papr[iii].Size1;
                size2 = papr[iii].Size2;
                commited = papr[iii].Commited;
                OnOrder = papr[iii].Onorderi;
                THRESH = papr[iii].Threshholdi;
            }
            if (s == papr[iii].Code && papr[iii].Location == "LONDON") {
                totall += Convert.ToInt32(papr[iii].Stock);
                gsm = papr[iii].Grammage;
                size1 = papr[iii].Size1;
                size2 = papr[iii].Size2;
                commited = papr[iii].Commited;
                OnOrder = papr[iii].Onorderi;
                THRESH = papr[iii].Threshholdi;
            }
            if (s == papr[iii].Code && papr[iii].Location == "PARIS") {
                totalp += Convert.ToInt32(papr[iii].Stock);
                gsm = papr[iii].Grammage;
                size1 = papr[iii].Size1;
                size2 = papr[iii].Size2;
                commited = papr[iii].Commited;
                OnOrder = papr[iii].Onorderi;
                THRESH = papr[iii].Threshholdi;
            } else {}
        }
        Finallist.Add(new Stock_Paper_Record() {
            Location = "BOTH", Code = Codes[iount], Stocki = totalg + totall + totalp + OnOrder, BBstocki = totalg, Lmstocki = totall, Ingstocki = totalp, Commited = commited, Ballance = (totalg + totall + totalp + OnOrder) - commited, Size1 = size1, Size2 = size2, Grammage = gsm, Threshholdi = THRESH, Onorderi = OnOrder
        });
        totalg = 0;
        totall = 0;
        totalp = 0;
        ii++;
        iount++;
    }
    return Finallist;
}
로버트 맥키

이것은 매우 가깝지만 레코드가없는 코드를 제공하면 모두 0으로 된 레코드를 반환하지 않지만 원래 코드는 반환합니다. 그것이 당신에게 중요한지 아닌지 확실하지 않습니다.

private static List<Stock_Paper_Record> Get_Final_List(List<Stock_Paper_Record> Finallist, List<Stock_Paper_Record> papr, List<string> Codes, List<string> locs) {

    return papr
      .Where(p=>Codes.Contains(p.Location))
      .GroupBy(p=>p.Code)
      .Select(g=>new {
        Code=g.Key,
        BBstocki=g.Where(p=>p.Location=="GLASGOW").Sum(p=>Convert.ToInt32(p.Stock)),
        Lmstocki=g.Where(p=>p.Location=="LONDON").Sum(p=>Convert.ToInt32(p.Stock)),
        Ingstocki=g.Where(p=>p.Location=="PARIS").Sum(p=>Convert.ToInt32(p.Stock)),
        Commited=g.FirstOrDefault().Commited,
        Size1=g.FirstOrDefault().Size1,
        Size2=g.FirstOrDefault().Size2,
        Grammage=g.FirstOrDefault().Grammage,
        Threshholdi=g.FirstOrDefault().Threshholdi,
        Onorderi=g.FirstOrDefault().Onorderi
      }).Select(g=>new Stock_Paper_Record {
        Location="BOTH",
        Code=g.Code,
        BBstocki=g.BBstocki,
        Lmstocki=g.Lmstocki,
        Ingstocki=g.Ingstocki,
        Commited=g.Commited,
        Size1=g.Size1,
        Size2=g.Size2,
        Grammage=g.Grammage,
        Threshholdi=g.Threshholdi,
        Onorderi=g.Onorderi,
        Stocki=g.BBstocki+g.Lmstocki+g.Ingstocki+g.Onorderi,
        Ballance=g.BBstocki+g.Lmstocki+g.Ingstocki+g.Onorderi=g.Commited
      })
      .ToList();
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

합계 결과에 따른 MySQL 순서

분류에서Dev

결과에 따른 합계 변경

분류에서Dev

조건에 따른 가중 합계

분류에서Dev

Excel의 기준에 따른 합계

분류에서Dev

헤더 제목에 따른 합계 값

분류에서Dev

시간에 따른 합계 플로팅

분류에서Dev

주어진 기준에 따른 합계

분류에서Dev

Pandas : 다른 엔티티의 최대 가치를 고려한 시간 범위에 따른 합계

분류에서Dev

조건에 따른 C # Linq OrderBy

분류에서Dev

SQL 문자열 집계는 변수 위치에 따라 다른 결과를 반환합니다.

분류에서Dev

다른 목록에 따른 파이썬 합계 목록 요소

분류에서Dev

다른 동일한 필드에 따른 행 값의 MySQL 합계

분류에서Dev

조건에 따른 계산

분류에서Dev

Python, Pandas : 열 값에 따른 일부 행의 병합 된 합계

분류에서Dev

필터링 된 기준에 따른 상위 n 개 값의 합계

분류에서Dev

값 조건에 따른 배열 요소의 합계 pyspark

분류에서Dev

사용자 역할에 따른 Woocommerce 최소 주문 합계

분류에서Dev

개체 상태에 따른 조건부 누적 합계

분류에서Dev

여러 행 + 헤더 기준에 따른 합계

분류에서Dev

여러 행 + 헤더 기준에 따른 합계

분류에서Dev

성장에 따른 성장과 질서의 MySQL 합계

분류에서Dev

SQL Server의 데이터에 따른 행 합계

분류에서Dev

지정된 값에 따른 누적 합계의 차이

분류에서Dev

Excel : 다른 열의 값에 따라 열 합계

분류에서Dev

MS 액세스, 기준에 따른 조건부 합계

분류에서Dev

기준에 따른 Matlab 합계 구조체 배열 행

분류에서Dev

연도 기준에 따른 PHP 합계 열

분류에서Dev

다른 지표에 따라 합계 최대화

분류에서Dev

dplyr 및 tidyverse를 사용하여 시간에 따른 집계 합계

Related 관련 기사

뜨겁다태그

보관