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

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

4
Func <T> โดยไม่มีพารามิเตอร์
ฉันสามารถส่งเมธอดที่มีพารามิเตอร์ out เป็น Func ได้หรือไม่? public IList&lt;Foo&gt; FindForBar(string bar, out int count) { } // somewhere else public IList&lt;T&gt; Find(Func&lt;string, int, List&lt;T&gt;&gt; listFunction) { } Func ต้องการประเภทเพื่อไม่ให้มีการรวบรวมและการเรียก listFunction ต้องใช้ int และจะไม่อนุญาตให้ใช้ มีวิธีทำเช่นนี้หรือไม่?
167 c#  .net  linq  generics  func 

5
LINQ - ซ้ายเข้าร่วมจัดกลุ่มตามและนับ
สมมติว่าฉันมี SQL นี้: SELECT p.ParentId, COUNT(c.ChildId) FROM ParentTable p LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId GROUP BY p.ParentId ฉันจะแปลสิ่งนี้เป็น LINQ เป็น SQL ได้อย่างไร ฉันติดอยู่ที่ COUNT (c.ChildId), SQL ที่สร้างขึ้นดูเหมือนว่าจะส่งออก COUNT (*) เสมอ นี่คือสิ่งที่ฉันได้รับ: from p in context.ParentTable join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1 from …
166 c#  .net  linq  linq-to-sql 

6
ความแตกต่างระหว่างการค้นหา () และพจนานุกรม (จากรายการ ())
ฉันพยายามคาดศีรษะว่าโครงสร้างข้อมูลใดที่มีประสิทธิภาพมากที่สุดและเมื่อใด / ที่ไหนที่จะใช้อันไหน ตอนนี้อาจเป็นได้ว่าฉันแค่ไม่เข้าใจโครงสร้างที่ดีพอ แต่ILookup(of key, ...)แตกต่างจากDictionary(of key, list(of ...))อย่างไร นอกจากนี้ฉันจะต้องใช้ที่ใดILookupและจะมีประสิทธิภาพมากขึ้นในแง่ของความเร็วของโปรแกรม / หน่วยความจำ / การเข้าถึงข้อมูล ฯลฯ
165 c#  .net  vb.net  linq 

6
ไม่สามารถสร้างค่าคงที่ประเภทสนับสนุนเฉพาะประเภทดั้งเดิมหรือประเภทการแจงนับในบริบทนี้
ฉันได้รับข้อผิดพลาดนี้สำหรับข้อความค้นหาด้านล่าง API.Models.PersonProtocolไม่สามารถสร้างค่าคงที่ของประเภท สนับสนุนชนิดดั้งเดิมหรือชนิดการแจงนับเท่านั้นในบริบทนี้ ppCombinedด้านล่างเป็นIEnumerableวัตถุของPersonProtocolTypeซึ่งถูกสร้างขึ้นโดย concat ของ 2 PersonProtocolรายการ เหตุใดจึงล้มเหลว เราไม่สามารถใช้ LINQ JOINข้อภายในSELECTของJOIN? var persons = db.Favorites .Where(x =&gt; x.userId == userId) .Join(db.Person, x =&gt; x.personId, y =&gt; y.personId, (x, y) =&gt; new PersonDTO { personId = y.personId, addressId = y.addressId, favoriteId = x.favoriteId, personProtocol = (ICollection&lt;PersonProtocol&gt;) ppCombined .Where(a =&gt; a.personId …

11
แปลงรายการเป็นพจนานุกรมโดยใช้ linq และไม่ต้องกังวลกับรายการซ้ำ
ฉันมีรายการวัตถุบุคคล ฉันต้องการแปลงเป็นพจนานุกรมโดยที่สำคัญคือชื่อและนามสกุล (ตัดแบ่ง) และค่าคือวัตถุบุคคล ปัญหาคือฉันมีบางคนที่ซ้ำซ้อนดังนั้นนี่จะระเบิดถ้าฉันใช้รหัสนี้: private Dictionary&lt;string, Person&gt; _people = new Dictionary&lt;string, Person&gt;(); _people = personList.ToDictionary( e =&gt; e.FirstandLastName, StringComparer.OrdinalIgnoreCase); ฉันรู้ว่ามันฟังดูแปลก แต่ตอนนี้ฉันไม่สนใจชื่อที่ซ้ำกันจริงๆ หากมีหลายชื่อฉันแค่อยากจะคว้ามันมา มีอยู่แล้วฉันสามารถเขียนรหัสนี้ด้านบนเพื่อใช้ชื่อเดียวและไม่ระเบิดซ้ำ
163 c#  linq  dictionary 

8
สร้างรายการจากสองรายการวัตถุด้วย linq
ฉันมีสถานการณ์ต่อไปนี้ class Person { string Name; int Value; int Change; } List&lt;Person&gt; list1; List&lt;Person&gt; list2; ฉันต้องรวม 2 รายการเข้าด้วยกันList&lt;Person&gt; ในกรณีที่เป็นคนเดียวกันที่บันทึกรวมจะมีชื่อนั้นค่าของบุคคลในรายการ 2 การเปลี่ยนแปลงจะเป็นค่าของ list2 - มูลค่าของ list1 เปลี่ยนเป็น 0 ถ้าไม่ซ้ำกัน
161 c#  linq 

4
LINQ Group By เป็นวัตถุพจนานุกรม
ฉันพยายามใช้ LINQ เพื่อสร้าง Dictionary&lt;string, List&lt;CustomObject&gt;&gt;List&lt;CustomObject&gt;จาก ฉันสามารถใช้งานได้โดยใช้ "var" แต่ฉันไม่ต้องการใช้ประเภทที่ไม่ระบุชื่อ นี่คือสิ่งที่ฉันมี var x = (from CustomObject o in ListOfCustomObjects group o by o.PropertyName into t select t.ToList()); ฉันได้ลองใช้Cast&lt;&gt;()จากห้องสมุด LINQ เมื่อฉันมีxแต่ฉันได้รับปัญหาการรวบรวมผลของมันเป็นนักแสดงที่ไม่ถูกต้อง
161 linq  dictionary 

7
ค้นหา () กับที่ไหน () FirstOrDefault ()
ฉันมักจะเห็นคนที่ใช้Where.FirstOrDefault()ทำการค้นหาและคว้าองค์ประกอบแรก ทำไมไม่ใช้เพียงFind()? มีข้อได้เปรียบอื่น ๆ หรือไม่? ฉันไม่สามารถบอกความแตกต่าง namespace LinqFindVsWhere { class Program { static void Main(string[] args) { List&lt;string&gt; list = new List&lt;string&gt;(); list.AddRange(new string[] { "item1", "item2", "item3", "item4" }); string item2 = list.Find(x =&gt; x == "item2"); Console.WriteLine(item2 == null ? "not found" : "found"); string item3 = list.Where(x …
161 c#  linq  linq-to-objects 


6
Linq ถึง Sql: การรวมภายนอกด้านซ้ายหลายรายการ
ฉันมีปัญหาในการหาวิธีใช้การรวมภายนอกด้านซ้ายมากกว่าหนึ่งรายการโดยใช้ LINQ กับ SQL ฉันเข้าใจวิธีใช้การรวมภายนอกหนึ่งครั้ง ฉันใช้ VB.NET ด้านล่างเป็นไวยากรณ์ SQL ของฉัน T-SQL SELECT o.OrderNumber, v.VendorName, s.StatusName FROM Orders o LEFT OUTER JOIN Vendors v ON v.Id = o.VendorId LEFT OUTER JOIN Status s ON s.Id = o.StatusId WHERE o.OrderNumber &gt;= 100000 AND o.OrderNumber &lt;= 200000

5
การค้นหา <TKey, TElement> คืออะไร
MSDN อธิบายการค้นหาเช่นนี้: คล้ายLookup&lt;TKey, TElement&gt; Dictionary&lt;TKey, TValue&gt;ความแตกต่างคือ พจนานุกรม &lt;TKey, TValue&gt;จับคู่คีย์กับค่าเดียวขณะที่การ ค้นหา &lt;TKey, TElement&gt;จับคู่คีย์กับชุดของค่า ฉันไม่พบคำอธิบายที่เป็นประโยชน์โดยเฉพาะอย่างยิ่ง การค้นหาใช้สำหรับทำอะไร
155 c#  .net  linq  lookup 

22
จะตรวจสอบว่า IEnumerable เป็นโมฆะหรือว่างเปล่าได้อย่างไร?
ฉันรักstring.IsNullOrEmptyวิธีการ ฉันชอบที่จะมีบางสิ่งบางอย่างที่จะช่วยให้การทำงานเดียวกันสำหรับ IEnumerable มีแบบนี้เหรอ? บางทีคลาสตัวช่วยในการรวบรวมข้อมูล เหตุผลที่ผมถามคือว่าในงบลักษณะรหัสรกถ้าลายคือif (mylist != null &amp;&amp; mylist.Any())มันจะสะอาดFoo.IsAny(myList)กว่าที่คิด โพสต์นี้ไม่ได้ให้คำตอบว่า: IEnumerable ว่างเปล่า? .

5
EF LINQ ประกอบด้วยเอนทิตีหลายแบบและซ้อนกัน
ตกลงฉันมีหน่วยงานสามระดับที่มีลำดับชั้นต่อไปนี้: หลักสูตร -&gt; โมดูล -&gt; บท นี่คือคำสั่ง EF LINQ ดั้งเดิม: Course course = db.Courses .Include(i =&gt; i.Modules.Select(s =&gt; s.Chapters)) .Single(x =&gt; x.Id == id); ตอนนี้ฉันต้องการรวมเอนทิตีอื่นที่เรียกว่าแล็บซึ่งเชื่อมโยงกับหลักสูตร ฉันจะรวมเอนทิตี Lab ได้อย่างไร ฉันลองสิ่งต่อไปนี้ แต่มันไม่ทำงาน: Course course = db.Courses .Include(i =&gt; i.Modules.Select(s =&gt; s.Chapters) &amp;&amp; i.Lab) .Single(x =&gt; x.Id == id); มีความคิดเห็นเกี่ยวกับการรวม Entity ที่ 2 …

5
String.IsNullOrWhiteSpace ใน LINQ Expression
ฉันมีรหัสต่อไปนี้: return this.ObjectContext.BranchCostDetails.Where( b =&gt; b.TarrifId == tariffId &amp;&amp; b.Diameter == diameter || (b.TarrifId==tariffId &amp;&amp; !string.IsNullOrWhiteSpace(b.Diameter)) || (!b.TarrifId.HasValue) &amp;&amp; b.Diameter==diameter); และฉันได้รับข้อผิดพลาดนี้เมื่อฉันพยายามเรียกใช้รหัส: LINQ to Entities ไม่รู้จักวิธีการ 'Boolean IsNullOrWhiteSpace (System.String)' วิธีการและวิธีนี้ไม่สามารถแปลเป็นนิพจน์ร้านค้าได้ " ฉันจะแก้ปัญหานี้และเขียนรหัสได้ดีกว่านี้ได้อย่างไร

7
ความแตกต่างระหว่าง IQueryable กับ IEnumerable คืออะไร
ฉันสับสนกับความแตกต่าง ค่อนข้างใหม่สำหรับ. Net ฉันรู้ว่าฉันสามารถสืบค้นIEnumerablesโดยใช้ส่วนขยาย Linq แล้วนี่คืออะไรIQueryableและมันแตกต่างกันอย่างไร ดูเพิ่มเติมความแตกต่างระหว่าง IQueryable [T] และ IEnumerable [T] คืออะไร? ที่ทับซ้อนกับคำถามนี้

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