ตั้งค่าประเภทคอลัมน์แบบไดนามิกใน LINQ

ฉันต้องการตั้งชื่อคอลัมน์ของเอาต์พุตจาก LINQ แบบไดนามิก ชอบเช่นนั้น:

summary Rows.Field<Type>("Name")

ฉันต้องทำเช่นนี้เพราะฉันต้องเรียงลำดับตามสามคอลัมน์ตามเงื่อนไขและแต่ละคอลัมน์มี 2 ประเภทที่แตกต่างกัน ได้แก่ float, int และ double

ใครบ้างมีข้อเสนอแนะเกี่ยวกับวิธีการนี้สามารถทำได้?


person Shivi    schedule 13.06.2011    source แหล่งที่มา
comment
ไม่แน่ใจเกี่ยวกับโค้ดของคุณมากนัก แต่คุณสามารถใช้ตัวเลือก Select(new{}) ได้ คุณยังสามารถใช้ LINQPad เพื่อทดลองได้   -  person John    schedule 13.06.2011
comment
มันหมายความว่าอะไร each column has 2 different types like ... (3 types here)?   -  person Snowbear    schedule 13.06.2011


คำตอบ (1)


LINQ ถึง SQL เกี่ยวข้องกับประเภทคงที่ แม้ว่าจะมีเคล็ดลับบางอย่างที่คุณสามารถทำได้ คุณไม่สามารถเปลี่ยนประเภทของฟิลด์ได้ทันที นอกเหนือจากการใช้ Convert.ToInt32 ฯลฯ เพื่อเปลี่ยนประเภทที่เหมาะสมเป็นค่าที่คุณต้องการในเวลาที่คุณต้องการแคสต์

หรือคุณสามารถลองส่งค่าให้กับแต่ละประเภทจากแบบสอบถามทั้งสามประเภท:

from c in ctx
select new
{
    IntVal = c.Value,
    DoubleVal = Convert.ToDouble(c.Value),
    .
    .
}

ด้วยวิธีนี้ คุณจะมีนักแสดงทั้งสามคนอย่างเหมาะสมและสามารถดูดไปในสนามที่ถูกต้องได้ เมื่อทำงานกับเรกคอร์ด คุณสามารถใช้กระดาษห่อรอบการสะท้อนเพื่อให้ได้สิ่งที่คล้ายกับสิ่งที่คุณต้องการได้ ฉันไม่รู้ว่า Convert นั้นรองรับ LINQ แต่คุณควรจะทำสิ่งที่คล้ายกันได้

ฮ.

person Brian Mains    schedule 14.06.2011