ฉันพยายามใช้ LINQ เพื่อสร้าง Dictionary<string, List<CustomObject>>
List<CustomObject>
จาก ฉันสามารถใช้งานได้โดยใช้ "var" แต่ฉันไม่ต้องการใช้ประเภทที่ไม่ระบุชื่อ นี่คือสิ่งที่ฉันมี
var x = (from CustomObject o in ListOfCustomObjects
group o by o.PropertyName into t
select t.ToList());
ฉันได้ลองใช้Cast<>()
จากห้องสมุด LINQ เมื่อฉันมีx
แต่ฉันได้รับปัญหาการรวบรวมผลของมันเป็นนักแสดงที่ไม่ถูกต้อง
จะทำอย่างไรถ้าคุณลอง var x = (จาก CustomObject o ใน ListOfCustomObjects กลุ่ม o โดย o.PropertyName เป็น t เลือก t) .ToList ();
—
esastincy
มีเหตุผลใดบ้างที่คุณต้องทำสิ่งนี้แทนที่จะใช้ ToLookup ซึ่งออกแบบมาสำหรับสิ่งนี้?
—
Jon Skeet
จอนคุณช่วยกรุณาโพสต์ตัวอย่างว่า ToLookup ทำงานอย่างไรในสถานการณ์นี้ ฉันไม่คุ้นเคยกับวิธี LINQ
—
Atari2600
@ JonSkeet คุณยอดเยี่ยมมาก! (ฉันหมายความว่าทุกคนรู้แล้ว แต่ก็ยัง) เหตุผลที่ฉันไม่ได้วางแผนที่จะใช้ ToLookup เป็นเพราะฉันไม่เคยได้ยินมาก่อนจนกระทั่งตอนนี้ ตอนนี้ฉันรู้!
—
neminem
เพื่อประโยชน์ของความสมบูรณ์การใช้
—
Michael Blackburn
var
ไม่ได้ใช้ประเภท "ไม่ระบุชื่อ" แต่ใช้ประเภท "นัย" new { thing = "stuff" };
ประเภทความเป็นคลาสใหม่ที่สร้างขึ้นโดยคอมไพเลอร์ในการจัดการการก่อสร้าง ประเภทโดยนัยคือคลาสที่มีอยู่แล้วvar
เป็นวิธีที่สะดวกในการอ้างอิงเมื่อตัวแปรถูกกำหนดทันทีประเภทตัวแปรสามารถอนุมานได้จากประเภทของวัตถุที่ได้รับมอบหมาย คุณสามารถพิมพ์ตัวแปรที่อ้างอิงถึงประเภทที่ไม่ระบุตัวตนโดยปริยายเช่น:var a = new { thing = "stuff" };