はLINQの支援Composable"エ"?
-
21-08-2019 - |
質問
他の ibpc貿易引合掲示板はLinq To Sql支援composable問合せ があったのかの議論の構成/concatる条項ます。これを利用する"、"すなわち最初のwhere節のwhere節が加されます。かんがいう構成でLinqクエリー、。
例:
var people = from p in Person
where p.age < 18
select p
var otherPeople = from p in people
where p.firstName equals "Daniel"
select p
これは人名の"ダニエル"とは18となります。を探している書式ではこれらの見人名の"ダニエル"では18.
注意:を使用していADO.net データサービスでは存在しないかもしれません。Contains()利用可能です。
編集:Eu提案(ゲリー Shutler)はどない機能ました。っ走ることができ問題ないものとします。
- ということができるとされていること、複数のデータベースのヒットだったな第三の条件(ユニオさんによるもIEnumerableとしてそのパラメータ)-つくろうと思いましたの構築、およびまたは諸表のコードを実行しつ。
- 連合によってサポートされていないADO.Net データサービス(詳しい内容は、出版社のウェブサ)
解決
あなたに簡単なように何をしたいです
var people = from p in Person
where p.age < 18 || p.firstName == "Daniel"
select p;
またはあなただけの簡単な例を与えている?
その場合は、使用することができます:
var under18 = from p in Person
where p.age < 18
select p;
var daniels = from p in Person
where p.firstName == "Daniel"
select p;
var combined = under18.Union(daniels);
LinqToSqlはORにそれを変換するのに十分なインテリジェントかもしれませんが、私はそうはわからない。
他のヒント
何ジョーAlbahariで PredicateBuilder に使用してはどうですか?
var predicate = PredicateBuilder.False<Person>();
predicate = predicate.Or(p => p.age < 18);
predicate = predicate.Or(p => p.firstName == "Daniel");
var query = Person.Where(predicate);
述語オプションは、移動するための方法です。連合のオプションは良いSQLを構築するものではありません。参考ます。http:// social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/925b245d-5529-4a64-8cd4-4bc83ee6fe7a/する
私は私のブログ上のセット内のキー値を検索クエリを達成する方法について書きました。 ここでは、関連するリンクがあります。
<のhref = "http://blogs.msdn.com/phaniraj/archive/2008/07/17/set-based-operations-in-ado-net-data-services.aspx" のrel = "nofollowをnoreferrer ">は、私がをADO.NET Data Servicesのパートでの操作が含まれています。
<のhref = "http://blogs.msdn.com/phaniraj/archive/2008/07/17/set-based-operations-in-ado-net-data-services.aspx" のrel = "nofollowをnoreferrer "> ADO.NET Data ServicesのパートII の
での操作が含まれていますこれを使用すると、この
ように見えるクエリを書くことができます
//The set in which we have to search for a match
List<string> citiesIWillVisit = new List<string>() {"London","Berlin","Prague"};
var customersAround = nwContext.Customers
.IsIn<Customers>(citiesIWillVisit, c=> c.City);
foreach (Customers localCustomer in customersAround) {
System.Console.WriteLine(localCustomer.ContactName);
}