PDA

View Full Version : سوال: خروجی این تابع



gharibeh223
دوشنبه 07 شهریور 1390, 14:45 عصر
یکی به من بگه نوع خروجی این تابع چی بگیرم ؟؟؟ به جای xxxxxxx چی بزارم ؟؟؟؟؟؟؟


public xxxxxxxxxxxxxxxxxxxxxxxx SelectForView(string id)
{
var bank = new DCDataContext();

var query = (from A in bank.A01s where (A.WellCode == id)
join F in bank.Fields on A.FieldCode equals F.FieldCode into A_F
join W in bank.WellTypes on A.WellTypeCode equals W.WellTypeCode into A_W
join C in bank.Contractors on A.ContractorCode equals C.ContractorCode into A_C
join P in bank.WellProfiles on A.WellProfileCode equals P.WellProfileCode into A_p

from F in A_F .DefaultIfEmpty()
from W in A_W .DefaultIfEmpty()
from C in A_C .DefaultIfEmpty()
from P in A_p.DefaultIfEmpty()
select new {A.WellCode, A.FieldCode, A.Location, A.WellTypeCode,
A.WellProfileCode, A.RIG, A.SpuddedInDate, A.ReleasedDate,
A.Reservoir, A.ContractorCode, A.FinalForecastedDepth, A.EstTTLRigDays, A.ActRigDays,
A.RTLevelSea, A.WaterDepth,
A.Zone, F.FieldName, C.Contractor1, W.WellType1 , P.WellProfileName,
P.WellProfileAbri}).Single() ;


return query;
}

computer _ student
دوشنبه 07 شهریور 1390, 15:24 عصر
زياد از كد هايي كه نوشتيد سر در نياوردم اما شايد اگه خروجي را از نوع object بگيريد جواب بده
تا حالا با نوع object امتحانش كرديد؟

gharibeh223
دوشنبه 07 شهریور 1390, 16:51 عصر
نه می خواهم به صورت Bussines Object خروجی بده .

کدش مهم نیست که چیه . شما فرض کن join چند جدول در Linq داری و حاصل خروجی از جدولهای جوین شده است .
حالا خروجی این تابع چی می زاری ؟؟؟

PetekDincos
دوشنبه 07 شهریور 1390, 17:55 عصر
با سلام
شما بایستی خودتون یک کلاس بنویسید و این فیلدهایی که در select new انتخاب کردید رو در اون کلاس به عنوان پراپرتی تعریف کنید بعد بیایید


select new MyClass
{
MyPropertyInClass=A.Value,
.
.
}

راه دیگه ای فکر نکنم داشته باشه با تشکر

gharibeh223
شنبه 19 شهریور 1390, 10:36 صبح
ممنون از پاسختون .
اگر ممکنه تعریف این کلاس مختصر توضیحی بدین .
ممنون .

PetekDincos
شنبه 19 شهریور 1390, 15:20 عصر
یکی به من بگه نوع خروجی این تابع چی بگیرم ؟؟؟ به جای xxxxxxx چی بزارم ؟؟؟؟؟؟؟


public xxxxxxxxxxxxxxxxxxxxxxxx SelectForView(string id)
{
var bank = new DCDataContext();

var query = (from A in bank.A01s where (A.WellCode == id)
join F in bank.Fields on A.FieldCode equals F.FieldCode into A_F
join W in bank.WellTypes on A.WellTypeCode equals W.WellTypeCode into A_W
join C in bank.Contractors on A.ContractorCode equals C.ContractorCode into A_C
join P in bank.WellProfiles on A.WellProfileCode equals P.WellProfileCode into A_p

from F in A_F .DefaultIfEmpty()
from W in A_W .DefaultIfEmpty()
from C in A_C .DefaultIfEmpty()
from P in A_p.DefaultIfEmpty()
select new {A.WellCode, A.FieldCode, A.Location, A.WellTypeCode,
A.WellProfileCode, A.RIG, A.SpuddedInDate, A.ReleasedDate,
A.Reservoir, A.ContractorCode, A.FinalForecastedDepth, A.EstTTLRigDays, A.ActRigDays,
A.RTLevelSea, A.WaterDepth,
A.Zone, F.FieldName, C.Contractor1, W.WellType1 , P.WellProfileName,
P.WellProfileAbri}).Single() ;


return query;
}

با سلام
دوست عزیز شما در خروجی کوئریتون این فیلدها رو می خواهید استخراج کنید


{A.WellCode, A.FieldCode, A.Location, A.WellTypeCode,
A.WellProfileCode, A.RIG, A.SpuddedInDate, A.ReleasedDate,
A.Reservoir, A.ContractorCode, A.FinalForecastedDepth, A.EstTTLRigDays, A.ActRigDays,
A.RTLevelSea, A.WaterDepth,
A.Zone, F.FieldName, C.Contractor1, W.WellType1 , P.WellProfileName,
P.WellProfileAbri}

مثلا فیلد A.WllCode یه فیلد از یه جدوله با یه نوع خاص (مثلا int ) و یا بقیه فیلدهای خروجی تون بنابراین شما می یایید یک کلاس تعریف می کنید مثلا با نام MyClass که در این کلاس به تعداد فیلدهایی که در خروجی دارید پراپرتی تعریف کرده با همان نوع مثلا برای A.WellCode که از نوع int است به این صورت تعریف می کنید کلاستون رو


public Class MyClass
{
public int WellCode{get;set;}
....
....
}

و برای بقیه فبلدها نیز به همین صورت بعد در هتگام کوئری گرفتن در قسمت select new که می نویسید نوع را نیز نوع کلاسی که تعریف کردید قرار می دید به این صورت


select new MyClass {WellCode=A.WellCode,
...
....

که در نتیجه خروجی شما از نوع MyCalss خواهد شد با تشکر