Ես գրում եմ 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-ում, այնպես որ նրբանկատ եղեք :)
.FirstOrDefault()
զանգը փոխարինել.Single()
զանգով, քանի որ հակառակ դեպքումwhere t.GameDataID == gf.GameDataID
-ը կարող է առաջացնելNullReferenceException
: 22.02.2011