คำถามติดแท็ก linq

Language Integrated Query (LINQ) เป็นคอมโพเนนต์ Microsoft .NET Framework ที่เพิ่มความสามารถในการสืบค้นข้อมูลดั้งเดิมให้กับภาษา. NET แม้ว่าจะมีพอร์ตสำหรับ Java, PHP, JavaScript และ ActionScript

5
สำหรับเทียบกับ foreach กับ LINQ
เมื่อฉันเขียนโค้ดใน Visual Studio, ReSharper (ขอให้พระเจ้าคุ้มครองมัน!) มักจะแนะนำให้ฉันเปลี่ยนโรงเรียนเก่าของฉันสำหรับวงในรูปแบบ foreach ขนาดกะทัดรัดมากขึ้น และบ่อยครั้งที่ฉันยอมรับการเปลี่ยนแปลงนี้ ReSharper ก้าวไปข้างหน้าและแนะนำให้ฉันเปลี่ยนอีกครั้งในรูปแบบ LINQ ดังนั้นฉันสงสัยว่า: มีข้อได้เปรียบจริงบ้างไหมในการปรับปรุงเหล่านี้ ในการใช้งานโค้ดอย่างง่าย ๆ ฉันไม่เห็นการเพิ่มความเร็ว (ชัด) แต่ฉันเห็นโค้ดน้อยลงและอ่านง่ายขึ้น ... ดังนั้นฉันจึงสงสัยว่า: มันคุ้มหรือไม่
86 c#  linq 

11
ทำไมการใช้ abstractions (เช่น LINQ) จึงเป็นเรื่องต้องห้าม? [ปิด]
ฉันเป็นผู้รับจ้างอิสระดังนั้นฉันจึงสัมภาษณ์ 3-4 ครั้งต่อปีเพื่อหากิ๊กใหม่ ๆ ตอนนี้ฉันอยู่ในรอบนั้นและกลับกลายเป็นโอกาสแม้ว่าฉันจะรู้สึกว่าการสัมภาษณ์เป็นไปด้วยดี สิ่งเดียวกันเกิดขึ้นกับฉันสองสามครั้งในปีนี้ ตอนนี้ฉันไม่ได้เป็นคนที่สมบูรณ์แบบและฉันไม่คาดหวังว่าจะเป็นแบบที่ดีสำหรับทุกองค์กร ที่กล่าวว่าแม่นเฉลี่ยของฉันต่ำกว่าปกติดังนั้นฉันถามผู้สัมภาษณ์สุดท้ายของฉันสำหรับข้อเสนอแนะที่สร้างสรรค์และเขาส่ง! สิ่งสำคัญตามที่ผู้สัมภาษณ์กล่าวคือฉันดูเหมือนจะเอนตัวไปสู่การใช้ abstractions (เช่น LINQ) มากกว่าที่จะไปสู่อัลกอริทึมที่ต่ำกว่าและมีการเติบโตแบบออร์แกนิก บนพื้นผิวสิ่งนี้ก็สมเหตุสมผล - ในความเป็นจริงมันทำให้คนอื่นปฏิเสธด้วยเช่นกันเพราะฉันพูดเรื่อง LINQ ในการสัมภาษณ์เหล่านั้นด้วยและดูเหมือนว่าผู้สัมภาษณ์รู้เรื่อง LINQ ไม่มากนัก (แม้ว่าพวกเขาจะเป็น. NET ผู้ชาย) ดังนั้นตอนนี้ฉันเหลือคำถามนี้:ถ้าเราควรจะ "ยืนอยู่บนไหล่ของยักษ์" และใช้ abstractions ที่มีให้เรา (เช่น LINQ) แล้วทำไมบางคนคิดว่ามันต้องห้าม? มันไม่สมเหตุสมผลที่จะดึงรหัส "ปิดชั้นวาง" ถ้ามันบรรลุเป้าหมายเดียวกันโดยไม่มีค่าใช้จ่ายเพิ่มเติมหรือไม่ สำหรับฉันแล้วดูเหมือนว่า LINQ แม้ว่ามันจะเป็นนามธรรม แต่ก็เป็นเพียงนามธรรมของอัลกอริทึมเดียวกันทั้งหมดที่จะเขียนเพื่อให้บรรลุจุดสิ้นสุดเดียวกัน เฉพาะการทดสอบประสิทธิภาพเท่านั้นที่สามารถบอกคุณได้ว่าวิธีการที่กำหนดเองของคุณดีกว่าหรือไม่ แต่ถ้าสิ่งใดที่ LINQ มีคุณสมบัติตรงตามข้อกำหนดทำไมไม่ต้องเขียนชั้นเรียนของคุณเองในตอนแรก ฉันไม่ได้ตั้งใจจะให้ความสำคัญกับ LINQ ที่นี่ ฉันแน่ใจว่าโลกของ JAVA นั้นมีบางสิ่งที่คล้ายคลึงกันฉันแค่อยากจะรู้ว่าทำไมคนบางคนถึงรู้สึกอึดอัดใจกับความคิดที่จะใช้สิ่งที่เป็นนามธรรมที่พวกเขาไม่ได้เขียน UPDATE ตามที่ …

10
การใช้งาน LINQ และ Lambda Expressions นำไปสู่รหัสที่อ่านได้น้อยลงหรือไม่ [ปิด]
ฉันกำลังพูดคุยกับเพื่อนร่วมงานใน Linq ฉันจะคัดลอกที่นี่: ผู้ร่วมงาน: ขอซื่อสัตย์ที่นี่ ไวยากรณ์ Linq แย่มาก มันสับสนและไม่ง่าย ฉัน: โอ้มาเลยสับสนมากกว่า T-SQL เหรอ? เพื่อนร่วมงาน: เอ่อใช่ ฉัน: มันมีส่วนพื้นฐานเดียวกันเลือกสถานที่และจาก ผู้ร่วมงาน: Linq สำหรับฉันคือการกำจัดไอเท็มเชิงสัมพันธ์ + OO ผู้ร่วมงาน: อย่าเข้าใจฉันผิด - มันมีประสิทธิภาพอย่างไม่น่าเชื่อ แต่พวกเขาเรียกคืน SQL เพื่อใช้การเก็บรวบรวมวัตถุ agains ฉันเห็นว่าการใช้ Linq + Lamda นั้นทรงพลังมาก (เขาเห็นด้วย) และทำให้อ่านรหัสได้ง่ายขึ้น (เขาไม่เห็นด้วยกับจุดนั้น): pickFiles = from f in pickFolder.GetFiles("*.txt") where ValidAuditFileName.IsMatch(f.Name) select f; หรือ var …

13
มันไม่มีเหตุผลที่จะคาดหวังใด ๆ () * ไม่ * ที่จะโยนข้อยกเว้นอ้างอิงเป็นโมฆะ?
เมื่อคุณสร้างวิธีการขยายที่คุณสามารถทำได้แน่นอนว่าเรียกใช้บนnullแต่ไม่เหมือนกับการเรียกใช้วิธีการแบบอินสแตนซ์การเรียกใช้แบบ null ไม่จำเป็นต้องมีเครื่องหมายNullReferenceException-> คุณต้องตรวจสอบและโยนด้วยตนเอง สำหรับการดำเนินการตามวิธีส่วนขยายของ Linq Any()Microsoft ตัดสินใจว่าพวกเขาควรจะโยนArgumentNullException( https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/AnyAll.cs ) มันทำให้ฉันต้องเขียน if( myCollection != null && myCollection.Any() ) ฉันผิดในฐานะลูกค้าของรหัสนี้ที่จะคาดหวังว่าเช่น((int[])null).Any()ควรกลับมาfalse?

9
การตั้งค่าสไตล์ LINQ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันมาใช้ LINQ ในการเขียนโปรแกรมทุกวันเป็นจำนวนมาก ในความเป็นจริงฉันไม่ค่อยได้ใช้ลูปที่ชัดเจน ฉันมี แต่พบว่าฉันไม่ได้ใช้ SQL เช่นไวยากรณ์อีกต่อไป ฉันใช้ฟังก์ชั่นเสริม ดังนั้นแทนที่จะพูดว่า: from x in y select datatransform where filter ฉันใช้: x.Where(c => filter).Select(c => datatransform) คุณชอบสไตล์ของ LINQ แบบไหนและคนอื่นในทีมของคุณพอใจกับอะไรบ้าง?
21 c#  coding-style  linq 

6
มีข้อได้เปรียบอะไรบ้างจากการใช้งาน LINQ ในลักษณะที่ไม่ได้แคชผลลัพธ์
นี่เป็นข้อผิดพลาดที่ทราบกันดีสำหรับผู้ที่เปียกปอนโดยใช้ LINQ: public class Program { public static void Main() { IEnumerable<Record> originalCollection = GenerateRecords(new[] {"Jesse"}); var newCollection = new List<Record>(originalCollection); Console.WriteLine(ContainTheSameSingleObject(originalCollection, newCollection)); } private static IEnumerable<Record> GenerateRecords(string[] listOfNames) { return listOfNames.Select(x => new Record(Guid.NewGuid(), x)); } private static bool ContainTheSameSingleObject(IEnumerable<Record> originalCollection, List<Record> newCollection) { return originalCollection.Count() == 1 && …

1
การทดสอบหน่วย: การยืนยันที่ถูกเลื่อนออกไปด้วย Linq
ตกลงหรือไม่ที่จะเพิ่มการยืนยันที่ถูกเลื่อนออกไปเช่นนี้ var actualKittens = actualKittens.Select(kitten => { Assert.IsСute(kitten); return kitten }); ทำไม? ดังนั้นฉันสามารถทำซ้ำได้เพียงครั้งเดียวแม้จะมีข้อความที่คาดว่าจะเกิดการรวบรวมที่เป็นรูปธรรมเช่น: CollectionAssert.AreEquivalent(expectedKittens, actualKittens.ToList()); และมันอาจจะไม่ใช่แค่เลือก แต่เป็นวิธีที่กำหนดตัววนซ้ำและมีการตรวจสอบและตรรกะจำนวนมาก (เช่นการนับและการกรอง) สิ่งที่สงสัยคือความซับซ้อนของการอ่านและการดีบักรหัสดังกล่าวในกรณีที่การทดสอบล้มเหลว

7
Java ที่ดีที่สุดเทียบเท่ากับ Linq คืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา มีห้องสมุดใน Java ที่ใกล้เคียงกับการให้บริการการทำงานของ Linq หรือไม่
17 java  linq 

5
MVC, WCF, EF, LINQ - แค่ฉันเหรอ? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน8 ปีที่ผ่านมา ... หรือสิ่งต่าง ๆ มีความซับซ้อนมากขึ้น? สำหรับฉันดูเหมือนว่าคุณจำเป็นต้องรู้หลายสิ่งหลายอย่างในการ 'พัฒนา' แอป MS web ให้เหมาะสมในทุกวันนี้ ในวันที่ไม่ดีเมื่อเราไม่รู้ว่ามีอะไรดีกว่านี้เรามีตารางฐานข้อมูล ASP.NET, ADO.NET และคุณสร้างเว็บแอปโดยใช้แนวคิดที่เรียบง่าย ทุกวันนี้ดูเหมือนจะมีกรอบมากมายที่จะ 'ช่วย' คุณทำถูกต้อง แต่ฉันไม่เชื่อว่านี่จะทำให้ง่ายขึ้นและดีขึ้น ฉันมีความรู้สึกฉันจะเป็นคนกลุ่มน้อยที่มีความรู้สึกเช่นนี้ แต่มีใครอีกบ้างที่คิดว่าสิ่งต่าง ๆ เป็นบ้าไปหน่อย?

3
เหตุผลในการตั้งชื่อ. NETs Select (Map) และ Aggregate (ลด) คืออะไร?
ในภาษาการเขียนโปรแกรมอื่น ๆ ฉันได้เห็น Map and Reduce และสิ่งเหล่านี้เป็นสิ่งสำคัญสำหรับการเขียนโปรแกรมการทำงาน ฉันไม่พบเหตุผลหรือประวัติว่าทำไม LINQ จึงมีAggregate(เหมือนReduce) และSelect(เหมือนกัน)Map )? ทำไมฉันถึงถามว่ามันใช้เวลาพอสมควรที่จะเข้าใจว่ามันเป็นสิ่งเดียวกันและฉันอยากรู้ว่าอะไรคือเหตุผลสำหรับเรื่องนี้

8
คำถามสัมภาษณ์ LINQ อาวุโส [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังเตรียมส่วน LINQ ในคำถามสัมภาษณ์สำหรับโปรแกรมเมอร์อาวุโส คำถามที่น่าสนใจที่สุดใน LINQ ที่จะรวมคืออะไร และทำไม?
16 c#  .net  interview  linq 

5
XSLT และทางเลือกที่เป็นไปได้ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันดู XSLT สำหรับการแปลงไฟล์ XML หนึ่งไฟล์เป็นอีกไฟล์หนึ่ง (HTML เป็นต้น) ตอนนี้ในขณะที่ฉันเห็นว่ามีประโยชน์กับ XSLT (เป็นเครื่องมือมาตรฐานและใช้แล้ว) ฉันลังเลด้วยเหตุผลสองประการ โปรเซสเซอร์ XSLT ดูเหมือนจะค่อนข้างหิวโหย / ทรัพยากร XML เป็นสัญกรณ์ที่ไม่ดีสำหรับการเขียนโปรแกรมและนั่นคือสิ่งที่ XSLT เกี่ยวข้อง ไม่ต้องการหมุนรอบ XSLT ที่นี่ แต่ฉันต้องการชี้ให้เห็นสิ่งที่ฉันไม่ชอบเกี่ยวกับเรื่องนี้เพื่อให้คุณมีความคิดในสิ่งที่ฉันคาดหวังจากทางเลือก มีพื้นหลังเสียงกระเพื่อมบางฉันสงสัยว่ามีวิธีที่ดีกว่าสำหรับการเปลี่ยนแปลงโครงสร้างต้นไม้ตามเสียงกระเพื่อมบาง ฉันได้เห็นการอ้างอิงถึง DSSSL น่าเศร้าที่ลิงก์ส่วนใหญ่เกี่ยวกับ DSSSL นั้นตายแล้วดังนั้นจึงเป็นเรื่องยากที่จะเห็นรหัสที่แสดงให้เห็น DSSSL ยังคงใช้งานอยู่หรือไม่ ฉันจำได้ว่าฉันได้ติดตั้ง openjade ครั้งเดียวเมื่อตรวจสอบสิ่งที่ docbook โพสต์บล็อกของ Jeff Atwoodดูเหมือนจะบอกใบ้ให้ใช้ …
15 xml  lisp  linq  xslt 

4
linq มีประสิทธิภาพมากกว่าที่ปรากฏบนพื้นผิวหรือไม่?
ถ้าฉันเขียนอะไรแบบนี้: var things = mythings .Where(x => x.IsSomeValue) .Where(y => y.IsSomeOtherValue) นี่เป็นเช่นเดียวกับ: var results1 = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue) results1.Add(t); var results2 = new List<Thing>(); foreach(var t in results1) if(t.IsSomeOtherValue) results2.Add(t); หรือมีเวทมนตร์ใต้ฝาครอบที่ใช้งานได้มากกว่านี้: var results = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue && t.IsSomeOtherValue) results.Add(t); หรือเป็นสิ่งที่แตกต่างอย่างสิ้นเชิงโดยสิ้นเชิง?
13 c#  linq 

1
เหตุใดจึงต้องมีการเขียนโปรแกรมที่จำเป็นมากกว่าการเขียนโปรแกรมที่ใช้งานได้? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ความเป็นมา:ฉันเป็นผู้สนับสนุนการเขียนโปรแกรมฟังก์ชั่นที่ทำงานที่ร้าน VB.NET ซึ่งรูปแบบจิตที่แพร่หลายคือการเขียนโปรแกรมที่จำเป็น การเป็นรากฐานของระบบของเราคือ WinForms ฉันสามารถเข้าใจได้ว่าเราจะไม่หนีจากการเขียนโปรแกรมที่จำเป็นทั้งหมด แต่ฉันก็ยังพยายามใช้ FP (หลัก ๆ ผ่าน Linq) ทุกที่ที่ทำได้เพราะฉันเชื่อในข้อดีของมัน อาร์กิวเมนต์ & การโต้แย้งแย้งกับ FP บางคนอาจสังเกตเห็นว่าความคล่องแคล่วของ Linq นั้นมีประสิทธิภาพน้อยกว่าคู่ที่จำเป็นในลักษณะนี้จะประมวลผลลำดับลงไปที่ลำดับอื่นและทำซ้ำนั้น โดยทั่วไปมันจะใช้เวลาอีกสองสามครั้งกว่าวิธีการที่จำเป็นซึ่งสามารถปรับให้เหมาะสมได้ดีกว่าเพื่อหลีกเลี่ยงการทำซ้ำซ้ำในลำดับ ด้วยเหตุนี้ผู้นำจึงไม่เข้าใจว่าทำไมฉันจึงเลือกวิธีการใช้งานที่ชัดเจนว่า "มีประสิทธิภาพน้อยลง" การโต้แย้ง : ฉันแย้งว่าในขณะที่บางครั้งมันมีประสิทธิภาพน้อยกว่าในแง่ของรอบการทำงานของ CPU แต่ฉันรู้สึกว่ามันเป็นสิ่งที่เข้าใจง่ายและเป็นมนุษย์มากกว่าเพราะแต่ละบรรทัดทำสิ่งเดียวที่ผ่านไปตามลำดับ สำหรับฉันนี้รู้สึกเหมือนมีสายการประกอบที่แต่ละคนที่สถานีของเขามีเพียงงานเดียวที่จะทำ ฉันรู้สึกว่าการแลกเปลี่ยนที่มีประสิทธิภาพน้อยมากได้รับการตอบแทนด้วยรหัสที่มีข้อกังวลแยกออกจากกันอย่างเรียบร้อย ข้อโต้แย้งต่อไปกับ FP ที่ฉันได้ยินในร้านค้าของฉันคือการ debug ยากขึ้นซึ่งเป็นเรื่องจริง ไม่ใช่เรื่องง่ายที่จะเหยียบรหัส Linq และบางครั้งฉันก็ต้องคลี่คลายห่วงโซ่วิธีการเพื่อติดตามและแยกแยะปัญหาที่ฉันไม่สามารถมองเห็นได้ทันที _Counter-argument: ส่วนใหญ่แม้ว่าฉันจะไม่ได้มีปัญหากับเรื่องนี้เพราะฉันคิดว่ารูปแบบการทำงานนั้นมีความชัดเจนในการอ่านและเมื่อมีข้อผิดพลาดเกิดขึ้นในห่วงโซ่การทำงานฉันมักจะเห็นปัญหาทันที คำถามของฉัน ฉันพยายามโปรโมตสไตล์การใช้งานในร้านของเราและฉันไม่รู้สึกว่ากำลังทำอะไรอยู่ ฉันทำทั้งสองรูปแบบของการเขียนโปรแกรมและเพิ่งขลุกอยู่ใน …

3
LINQ สร้างโดเมนปัญหาอะไร
ทุกครั้งที่ฉันเห็นคำถามที่โพสต์บน Stack Overflow ใน C # ฉันเห็นคำตอบอย่างน้อยหนึ่งหรือสองโพสต์ที่แก้ปัญหาด้วย LINQ โดยปกติคนที่มีชื่อเสียงสูงมากมักใช้ LINQ อย่างมืออาชีพ ดังนั้นคำถามของฉันคือโดเมนปัญหาที่ควรจะใช้คือ LINQ หมายเหตุด้านข้าง: มีจุดประสงค์ใดที่ควรหลีกเลี่ยงหรือไม่? ขนาดของชุดข้อมูลมีผลต่อประสิทธิภาพของการสืบค้น LINQ หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.