タグ付けされた質問 「linq」

言語統合クエリ(LINQ)は、.NET言語にネイティブデータクエリ機能を追加するMicrosoft .NET Frameworkコンポーネントです。[linq-to-sql]、[linq-to-entities] / [entity-framework]、[plinq]など、必要に応じてより詳細なタグの使用を検討してください

8
匿名型のLINQ Select Distinct
だから私はオブジェクトのコレクションを持っています。正確なタイプは重要ではありません。それから、特定のプロパティのペアのすべての一意のペアを抽出したいので、 myObjectCollection.Select(item=>new { Alpha = item.propOne, Bravo = item.propTwo } ).Distinct(); だから私の質問は:この場合、Distinctはデフォルトのオブジェクトのイコールを使用しますか(各オブジェクトは新しいので、私には役に立たないでしょう)、または異なるイコール(この場合、AlphaとBravoの等しい値)を実行するように指示できますか? =>等しいインスタンス)?これを行わない場合、その結果を達成する方法はありますか?

4
別のリストIDからリストを並べ替える
私はこのようないくつかの識別子を持つリストを持っています: List<long> docIds = new List<long>() { 6, 1, 4, 7, 2 }; Morover、私は<T>上記のIDで表されるアイテムの別のリストを持っています。 List<T> docs = GetDocsFromDb(...) 両方のコレクションで同じ順序を維持する必要があるため、のアイテムList<T>は最初のアイテムと同じ位置になければなりません(検索エンジンのスコアリングの理由により)。そして、このプロセスはGetDocsFromDb()関数内では実行できません。 必要に応じて、2番目のリストを他の構造(Dictionary<long, T>たとえば)に変更することは可能ですが、変更しない方がよいでしょう。 LINQを使用してこの「いくつかのIDに応じた順序付け」を行う簡単で効率的な方法はありますか?
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 } ); userList.Add( …
149 c#  linq 

6
LINQ to SQL-複数の結合条件を使用した左外部結合
LINQに変換しようとしている次のSQLがあります。 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条件がWHERE句ではなくJOINの一部であるのはなぜですか?そのためf一部の行のために存在し、私はまだこれらの行が含まれたくないかもしれません。条件がWHERE句のJOINの後に適用された場合、希望する動作が得られません。 残念ながらこれ: from p in context.Periods join f in context.Facts on p.id …
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#のときは気にしていません)。事前にみんな(そしてギャル?)ありがとうございました。 編集:私は解決策を考え出しました; リストをループして、現在の要素に文字列が含まれているかどうかを確認し、現在の要素と等しい文字列を設定します。しかし、これより効率的な方法はありますか? string myString = "bla"; string element = ""; for (int i = 0; i < myList.Count; i++) { if (myList[i].Contains(myString)) element = myList[i]; }
146 c#  .net  linq  list  contains 

8
WhereとSelectのパフォーマンスがSelectだけの理由
私はこのようなクラスを持っています: public class MyClass { public int Value { get; set; } public bool IsValid { get; set; } } 実際にははるかに大きいですが、これは問題(奇妙さ)を再現します。 Valueインスタンスが有効なの合計を取得します。これまでのところ、これに対する2つの解決策を見つけました。 最初のものはこれです: int result = myCollection.Where(mc => mc.IsValid).Select(mc => mc.Value).Sum(); ただし、2つ目は次のとおりです。 int result = myCollection.Select(mc => mc.IsValid ? mc.Value : 0).Sum(); 最も効率的な方法を取得したいと思います。最初は、2番目のほうが効率的だと思いました。それから私の理論的な部分は「まあ、1つはO(n + m + m)、もう1つはO(n + n)です。最初の1つは無効が多いほどパフォーマンスが良く、2つ目はパフォーマンスが高いはずです。より少ない」。それらは同等に機能すると思いました。編集:そして@MartinはWhereとSelectが組み合わされていることを指摘したので、実際にはO(m + …
145 c#  linq 

8
配列が別の配列のサブセットであるかどうかを確認する
そのリストが別のリストのサブセットであるかどうかを確認する方法に関するアイデアはありますか? 具体的には、 List<double> t1 = new List<double> { 1, 3, 5 }; List<double> t2 = new List<double> { 1, 5 }; LINQを使用して、t2がt1のサブセットであることを確認するにはどうすればよいですか?
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")と、現在のレベルの直接の子である要素のみが取得されます。私が探しているのは、XPathの "// element_name"に相当するものです...だけを使用するXPath必要がありますか、それともLINQメソッドを使用してそれを行う方法はありますか?ありがとう。
143 c#  .net  xml  linq  linq-to-xml 

11
FirstOrDefault:null以外のデフォルト値
私が理解しているように、Linqでは、メソッドFirstOrDefault()はDefaultnull以外の値を返すことができます。クエリの結果にアイテムがない場合、この(および同様の)メソッドでnull以外のものが返されることはわかりません。これを設定して、特定のクエリに値がない場合に事前定義された値がデフォルト値として返されるようにするための特別な方法はありますか?
142 .net  linq 

4
IGroupingの「Value」プロパティを取得します
私はのようなデータ構造を持っています 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
順序が昇順でnullが最後であるnull列によるLINQ順序
製品のリストを価格でソートしようとしています。 結果セットでは、列ごとに価格の高いものから高いものまで製品をリストする必要がありますLowestPrice。ただし、この列はNULL可能です。 次のようにリストを降順に並べ替えることができます。 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 to SQL左外部結合
このクエリは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 }

9
指定された型メンバー 'Date'はLINQ to Entitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみ
Entity Frameworkでこのコードを使用すると、次のエラーが表示されます。特定の日付のすべての行を取得する必要がありDateTimeStartます。この形式のタイプはDataTypeです。2013-01-30 12:00:00.000 コード: var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference) .Where(x => x.DateTimeStart.Date == currentDateTime.Date); エラー: base {System.SystemException} = {"指定された型メンバー 'Date'はLINQ to Entitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされています。"} それを修正する方法はありますか?

9
LINQ-to-SQLでの大文字と小文字を区別しない文字列比較
大文字と小文字を区別しない文字列比較を実行するためにToUpperとToLowerを使用するのは賢明ではないことを読みましたが、LINQ-to-SQLに関しては代替手段がありません。String.CompareのignoreCaseおよびCompareOptions引数は、LINQ-to-SQLによって無視されます(大文字と小文字を区別するデータベースを使用している場合は、大文字と小文字を区別しない比較を要求しても、大文字と小文字を区別する比較が行われます)。ToLowerまたはToUpperはここで最良のオプションですか?一方が他方よりも優れていますか?私はどこかでToUpperの方が優れていると読んだと思いましたが、それがここで当てはまるかどうかはわかりません。(私は多くのコードレビューを行っており、誰もがToLowerを使用しています。) Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0 これは、row.Nameを「test」と単に比較し、大文字と小文字を区別するデータベースで「Test」と「TEST」を返さないSQLクエリに変換されます。
137 .net  sql  vb.net  linq  linq-to-sql 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.