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

Language Integrated Query (LINQ) เป็นส่วนประกอบ Microsoft .NET Framework ที่เพิ่มความสามารถในการสอบถามข้อมูลดั้งเดิมในภาษา. NET โปรดพิจารณาใช้แท็กที่มีรายละเอียดเพิ่มเติมตามความเหมาะสมเช่น [linq-to-sql], [linq-to-entity] / [entity-framework] หรือ [plinq]

8
LINQ เลือก Distinct ที่มีประเภท Anonymous
ดังนั้นฉันมีชุดของวัตถุ ประเภทที่แน่นอนไม่สำคัญ จากนั้นฉันต้องการแยกคู่ที่ไม่ซ้ำกันของคู่ของคุณสมบัติเฉพาะดังนั้น: myObjectCollection.Select(item=>new { Alpha = item.propOne, Bravo = item.propTwo } ).Distinct(); ดังนั้นคำถามของฉันคือ: ความแตกต่างในกรณีนี้จะใช้วัตถุเริ่มต้นเท่ากับ (ซึ่งจะไร้ประโยชน์กับฉันเนื่องจากวัตถุแต่ละชิ้นเป็นของใหม่) หรือสามารถบอกให้ทำสิ่งต่าง ๆ ได้ (ในกรณีนี้ค่าที่เท่ากันของ Alpha และ Bravo => อินสแตนซ์ที่เท่ากัน)? มีวิธีใดบ้างที่จะบรรลุผลดังกล่าวหากไม่ได้ผล

4
เรียงลำดับรายการจากรหัสรายการอื่น
ฉันมีรายการที่มีตัวระบุบางอย่างเช่นนี้: List<long> docIds = new List<long>() { 6, 1, 4, 7, 2 }; Morover ฉันมีรายการอีกรายการหนึ่ง<T>ซึ่งมีรหัสตามที่อธิบายไว้ข้างต้น List<T> docs = GetDocsFromDb(...) ฉันต้องรักษาลำดับที่เหมือนกันในทั้งสองคอลเล็กชันเพื่อให้รายการในList<T>ต้องอยู่ในตำแหน่งเดียวกันมากกว่าอันดับแรก (เนื่องจากเหตุผลในการให้คะแนนของเครื่องมือค้นหา) และกระบวนการนี้ไม่สามารถทำได้ในGetDocsFromDb()ฟังก์ชั่น หากจำเป็นก็เป็นไปได้ที่จะเปลี่ยนรายการที่สองเป็นโครงสร้างอื่น ๆ ( Dictionary<long, T>ตัวอย่าง) แต่ฉันไม่ต้องการเปลี่ยนมัน มีวิธีที่ง่ายและมีประสิทธิภาพในการทำ "ordenation ขึ้นอยู่กับบาง ID" กับ LINQ หรือไม่?
150 c#  linq  sorting  collections 

4
การใช้ Linq เพื่อจัดกลุ่มรายการวัตถุลงในรายการจัดกลุ่มใหม่ของรายการวัตถุ
ฉันไม่รู้ว่านี่เป็นไปได้ใน Linq แต่นี่จะไป ... ฉันมีวัตถุ: public class User { public int UserID { get; set; } public string UserName { get; set; } public int GroupID { get; set; } } ฉันส่งคืนรายการที่อาจมีลักษณะดังนี้: List<User> userList = new List<User>(); userList.Add( new User { UserID = 1, UserName = "UserOne", GroupID = 1 …
149 c#  linq 

6
LINQ ไปยัง SQL - Left Outer Join พร้อมกับเงื่อนไขการเข้าร่วมหลายแบบ
ฉันมี SQL ต่อไปนี้ซึ่งฉันพยายามจะแปลเป็น LINQ: SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100 ฉันเห็นการใช้งานโดยทั่วไปของการเข้าร่วมด้านนอกด้านซ้าย (เช่น. into x from y in x.DefaultIfEmpty()ฯลฯ ) แต่ฉันไม่แน่ใจว่าจะแนะนำเงื่อนไขการเข้าร่วมอื่น ๆ ได้อย่างไร ( AND f.otherid = 17) แก้ไข ทำไมAND f.otherid = 17ส่วนเงื่อนไขของ …
148 c#  sql  linq  linq-to-sql  outer-join 

12
ตรวจสอบว่ารายการมีองค์ประกอบที่มีสตริงและรับองค์ประกอบนั้น
ในขณะที่ค้นหาคำตอบสำหรับคำถามนี้ฉันพบคนที่คล้ายกันโดยใช้ LINQ แต่ฉันไม่สามารถเข้าใจพวกเขาได้อย่างสมบูรณ์ (และใช้พวกเขา) เนื่องจากฉันไม่คุ้นเคย สิ่งที่ฉันต้องการโดยพื้นฐานคือ: ตรวจสอบว่าองค์ประกอบใด ๆ ของรายการมีสตริงเฉพาะ ถ้าเป็นเช่นนั้นรับองค์ประกอบนั้น ฉันไม่รู้จะทำอย่างไร สิ่งที่ฉันสามารถทำได้คือ (ไม่ทำงานแน่นอน): if (myList.Contains(myString)) string element = myList.ElementAt(myList.IndexOf(myString)); ฉันรู้ว่าทำไมมันไม่ทำงาน: myList.Contains()ไม่ส่งคืนtrueเนื่องจากจะตรวจสอบว่าองค์ประกอบทั้งหมดของรายการตรงกับสตริงที่ฉันระบุ myList.IndexOf() จะไม่พบสิ่งที่เกิดขึ้นเนื่องจากเป็นกรณีอีกครั้งมันจะตรวจสอบองค์ประกอบที่ตรงกับสตริง ยังฉันไม่มีเงื่อนงำวิธีการแก้ปัญหานี้ แต่ฉันคิดว่าฉันจะต้องใช้ LINQ ตามที่แนะนำในคำถามที่คล้ายกันเพื่อเหมือง ที่ถูกกล่าวว่าถ้าเป็นกรณีที่นี่ฉันต้องการให้ผู้ตอบเพื่ออธิบายการใช้งาน LINQ ในตัวอย่างของพวกเขา (ดังที่ฉันบอกว่าฉันไม่ได้ใส่ใจกับมันในเวลาที่ฉันใช้ C #) ขอบคุณล่วงหน้าพวก (และ gals?) แก้ไข: ฉันได้มาด้วยวิธีการแก้ปัญหา; เพียงแค่วนดูรายการตรวจสอบว่าองค์ประกอบปัจจุบันมีสตริงและจากนั้นตั้งค่าสตริงเท่ากับองค์ประกอบปัจจุบัน ฉันสงสัยว่ามีวิธีที่มีประสิทธิภาพมากกว่านี้หรือไม่? string myString = "bla"; string element = ""; for (int …
146 c#  .net  linq  list  contains 

8
ทำไมอยู่ที่ไหนและเลือกดีกว่าเพียงแค่เลือก?
ฉันมีชั้นเรียนเช่นนี้ public class MyClass { public int Value { get; set; } public bool IsValid { get; set; } } อันที่จริงแล้วมันมีขนาดใหญ่กว่า แต่สิ่งนี้ทำให้เกิดปัญหาขึ้นอีกครั้ง ฉันต้องการได้ผลรวมของValueซึ่งเป็นกรณีที่ถูกต้อง จนถึงตอนนี้ฉันได้พบสองวิธีนี้ คนแรกคือ: int result = myCollection.Where(mc => mc.IsValid).Select(mc => mc.Value).Sum(); อย่างไรก็ตามอันที่สองคือ: int result = myCollection.Select(mc => mc.IsValid ? mc.Value : 0).Sum(); ฉันต้องการวิธีที่มีประสิทธิภาพที่สุด ตอนแรกฉันคิดว่าอันที่สองจะมีประสิทธิภาพมากกว่า จากนั้นส่วนทางทฤษฎีของฉันเริ่มไป "อืม, อันหนึ่งคือ O …
145 c#  linq 

8
ตรวจสอบว่าอาร์เรย์เป็นชุดย่อยของอีกชุดหรือไม่
ความคิดเกี่ยวกับวิธีการตรวจสอบว่ารายการนั้นเป็นส่วนย่อยของอีก โดยเฉพาะฉันมี List<double> t1 = new List<double> { 1, 3, 5 }; List<double> t2 = new List<double> { 1, 5 }; วิธีตรวจสอบว่า t2 เป็นชุดย่อยของ t1 โดยใช้ LINQ อย่างไร
145 c#  list  linq  subset 

12
วิธีรับดัชนีขององค์ประกอบใน IEnumerable?
ฉันเขียนสิ่งนี้: public static class EnumerableExtensions { public static int IndexOf<T>(this IEnumerable<T> obj, T value) { return obj .Select((a, i) => (a.Equals(value)) ? i : -1) .Max(); } public static int IndexOf<T>(this IEnumerable<T> obj, T value , IEqualityComparer<T> comparer) { return obj .Select((a, i) => (comparer.Equals(a, value)) ? i : -1) …
144 c#  .net  linq  ienumerable  indexof 

10
ค้นหา XDocument สำหรับองค์ประกอบตามชื่อที่ความลึกใด ๆ
ฉันมีXDocumentวัตถุ ฉันต้องการสอบถามองค์ประกอบที่มีชื่อเฉพาะที่ระดับความลึกใด ๆ โดยใช้ LINQ เมื่อฉันใช้Descendants("element_name")ฉันจะได้รับองค์ประกอบที่เป็นลูกโดยตรงของระดับปัจจุบัน สิ่งที่ฉันกำลังมองหาคือสิ่งที่เทียบเท่ากับ "// element_name" ใน XPath ... ฉันควรใช้XPathหรือมีวิธีใช้ LINQ หรือไม่? ขอบคุณ
143 c#  .net  xml  linq  linq-to-xml 


11
FirstOrDefault: ค่าเริ่มต้นอื่นที่ไม่ใช่ null
ดังที่ฉันเข้าใจแล้วใน Linq วิธีFirstOrDefault()สามารถคืนDefaultค่าของสิ่งอื่นที่ไม่ใช่ null สิ่งที่ฉันไม่ได้ทำคือสิ่งอื่นที่ไม่ใช่ null สามารถส่งคืนโดยวิธีนี้ (และคล้ายกัน) เมื่อไม่มีรายการในผลลัพธ์แบบสอบถาม มีวิธีใดที่สามารถตั้งค่านี้ได้ดังนั้นหากไม่มีค่าสำหรับการสืบค้นเฉพาะค่าที่กำหนดไว้ล่วงหน้าจะถูกส่งกลับเป็นค่าเริ่มต้นหรือไม่
142 .net  linq 

4
รับคุณสมบัติ "มูลค่า" ในการจัดกลุ่ม IGG
ฉันมีโครงสร้างข้อมูลเช่น public DespatchGroup(DateTime despatchDate, List<Products> products); และฉันพยายามทำ ... var list = new List<DespatchGroup>(); foreach (var group in dc.GetDespatchedProducts().GroupBy(i => i.DespatchDate)) { // group.Values is not correct... how do I write this? list.Add(new DespatchGroup(group.Key, group.Values); } เห็นได้ชัดว่าฉันไม่เข้าใจIGroupingเพราะฉันไม่สามารถเห็นวิธีการบันทึกข้อมูลภายในกลุ่มได้!

10
การสั่งซื้อ LINQ ตามคอลัมน์ null ซึ่งคำสั่งนั้นขึ้นและควรเป็นค่าสุดท้าย
ฉันพยายามเรียงลำดับรายการสินค้าตามราคา LowestPriceชุดผลความต้องการที่จะรายการสินค้าตามราคาจากต่ำไปสูงจากคอลัมน์ อย่างไรก็ตามคอลัมน์นี้ไม่สามารถใช้ได้ ฉันสามารถเรียงลำดับรายการจากมากไปน้อยเช่น: var products = from p in _context.Products where p.ProductTypeId == 1 orderby p.LowestPrice.HasValue descending orderby p.LowestPrice descending select p; // returns: 102, 101, 100, null, null อย่างไรก็ตามฉันไม่สามารถหาวิธีเรียงลำดับจากน้อยไปหามาก // i'd like: 100, 101, 102, null, null
141 c#  linq  sorting 

6
LINQ ไปยัง SQL Left Outer เข้าร่วม
แบบสอบถามนี้เทียบเท่ากับการLEFT OUTERเข้าร่วมหรือไม่ //assuming that I have a parameter named 'invoiceId' of type int from c in SupportCases let invoice = c.Invoices.FirstOrDefault(i=> i.Id == invoiceId) where (invoiceId == 0 || invoice != null) select new { Id = c.Id , InvoiceId = invoice == null ? 0 : invoice.Id }


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