AMcoder - javascript, python, java, html, php, sql

Օգնություն Linq հարցումով

Ես գրում եմ linq հարցում և դրա հետ կապված դժվարությունների եմ հանդիպել, ուստի մտածում էի՝ արդյոք որևէ մեկը կարող է օգնել: Ահա մի փոքր նախապատմություն.

Ես չեմ նախագծել տվյալների բազան, որպեսզի կառուցվածքը չփոխվի: Այսպիսով, ես ունեմ Հիմնական «Խաղ» աղյուսակը, որն ունի հիմնական ապրանքի կոդը, այս աղյուսակի օտար բանալին GameDataID-ն է GameData աղյուսակից, որը պարունակում է տեղեկություններ, ինչպիսիք են թողարկման ամսաթվերը, թողարկվել են և այլն: Այնուհետև ես ունեմ GameFormat աղյուսակը, որը պարունակում է խաղի ապրանքի կոդերը յուրաքանչյուր ձևաչափով, օրինակ. Mac, Windows և այլն, և կրկին GameDataID-ը օտար բանալի է: Տես ներքեւում.

Game

GameID PK
MainGameProductCode
MainGameTitle
GameDataID FK

GameData

GameDataID PK
GameReleaseDate
GameReleasedBy

GameFormat

GameFormatID PK
GameDataID FK
GameFormatProductcode

Այսպիսով, երբ վաճառքի հաշվետվությունները հետ են ստացվում, որոշները պարունակում են միայն «GameFormatProductCode» որպես ապրանքի նույնացուցիչ: Այսպիսով, «GameFormatProductCode»-ից ես պետք է ստանամ «GameID»-ը հիմնական Խաղի աղյուսակում:

Մինչ այժմ ես գրել եմ linq հարցումը՝ GameFormatProductcode-ը GameFormat աղյուսակից վերբերելու համար, սակայն ես չգիտեմ, թե ինչպես կարելի է վերցնել GameID-ը հիմնական Խաղի աղյուսակից:

private Int64 GetGameID(string gameFormatProductCode)
{
    ModelCtn ctn = new ModelCtn();
    Game game = null;
    GameFormat gf = null;

    gf = (from t in ctn.GameFormat
        where t.GameFormatProductcode == gameFormatProductCode
        select t).FirstOrDefault();

    // Need to find GameID from Game table and return it.

    return gf;

}

Որևէ linq-ի փորձագետ այնտեղ ցանկանում է ինձ ճիշտ ուղղություն ցույց տալ: Շատ նոր է Linq-ում, այնպես որ նրբանկատ եղեք :)

22.02.2011

  • Ես կապ չեմ տեսնում GameFormat-ի և Game աղյուսակների միջև, ունե՞ք դա: 22.02.2011
  • Ներողություն, ես խմբագրել եմ իմ հարցը։ GameDataID-ը առաջնային բանալին է: 22.02.2011

Պատասխանները:


1

Դուք կարող եք GameDataID-ը ստանալ GameFormat աղյուսակից և օգտագործել այն Game աղյուսակում հարցումներ անելու համար

private Int64 GetGameID(string gameFormatProductCode)
{
    ModelCtn ctn = new ModelCtn();
    Game game = null;
    GameFormat gf = null;

    gf = (from t in ctn.GameFormat
        where t.GameFormatProductcode == gameFormatProductCode
        select t).FirstOrDefault();

    // Need to find GameID from Game table and return it.
    var gID = (from t in ctn.Game
               where t.GameDataID == gf.GameDataID
               select t.GameID).FirstOrDefault();

    return gID;

}
22.02.2011
  • Շնորհակալություն Ջեֆ, հենց այդ օրերից մեկն է!! Ես կնշեմ որպես ճիշտ, երբ ժամկետը լրանա :) 22.02.2011
  • Սա ենթադրում է, որ Game.GameDataId-ն ունի 1-ից 1 հարաբերություն GameData.GameDataId-ի հետ... @109221793 դա ճիշտ է: 22.02.2011
  • @109221793 - Խնդիր չկա: շնորհակալություն :) 22.02.2011
  • Ես կարծում եմ, որ ավելի լավ է առաջին .FirstOrDefault() զանգը փոխարինել .Single() զանգով, քանի որ հակառակ դեպքում where t.GameDataID == gf.GameDataID-ը կարող է առաջացնել NullReferenceException: 22.02.2011

  • 2

    Միակ ճանապարհը, որը ես տեսնում եմ, որ դա հնարավոր է, եթե կա մեկ առ մեկ հարաբերություններ, որոնք կապում են Խաղերը և GameData աղյուսակները: Եթե ​​Game.GameDataID-ը կարող է օգտագործել GameDataID-ը միայն մեկ անգամ (և միայն մեկ անգամ), ապա դա պետք է աշխատի: Եթե ​​GameData գրառումը կարող է օգտագործվել մի քանի Խաղերի կողմից, ապա այս մեթոդը հնարավոր չի լինի օգտագործել:

    gf = (from t in ctn.GameFormat
         join g in ctn.Game on t.Game equals gd.GameDataID
         where t.GameFormatProductcode == gameFormatProductCode
         select g.GameID).FirstOrDefault();
    
    22.02.2011

    3

    GameFormat-ից GameDataId-ը կարող է օգտագործվել Game աղյուսակից GameID-ը գտնելու համար:

    Խմբագրել. Շատ դանդաղ: Լավ պատասխան Ջեֆի կողմից:

    22.02.2011
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..