2012-04-24 4 views
0

検索用語、クリックなどを含むエンティティのリストがあります
エンティティ間のクリック量を比較することができます。つまり、「無料サンプル」という語を含むすべてのエンティティ検索が始まり、フレーズの最後に「私を捕まえる」というフレーズを含むすべてのエンティティと比較します。
私は複数のforeachとswitch(ユーザーがクエリと文字列の一部を選択するため)でこれを行うことができますが、Linqを使って "start with"と "end with"関数を使用できることを理解しています。あなたは私を導いてくれますか?例外がスローされます - 複数見つかっがあれば、条件を満足する単一のエンティティを返すためにLINQ Single()/SingleorDefault()Linqの代表者

var filtered = entities.Where(e => 
         e.SearchPattern.StartsWith("Start") 
         && 
         e.SearchPattern.EndsWith("End")); 

:条件を満たしているエンティティのセットを返すために

+6

あなたが持っているものを明確にするために少しのコードを投稿できますか? – NibblyPig

+0

@ChenBiran: ようこそ。また、あなたがStackOverflowを初めて使用しているので、あなたは良い回答をupvoteでき、Answerの隣にあるチェックマークをチェックすることで一番助けになった答えを受け入れることができます。このサイトでは、upv​​oteまたは受け入れられた答えは「感謝」としてカウントされます。 –

答えて

1

LINQ Where()。完全なリストについては、与えられた条件のために最初/最後のエンティティを返すために

var filtered = entities.Single(e => 
         e.SearchPattern.StartsWith("Start") 
         && 
         e.SearchPattern.EndsWith("End")); 

LINQ First()/Last() ...

var filtered = entities.First(e => 
          e.SearchPattern.StartsWith("Start") 
          && 
          e.SearchPattern.EndsWith("End")); 

参照Enumerable class methods

1

あなたは物事のリストをしたいように聞こえます「無料サンプル」から始まり、「私を逮捕する」で終わる別のもの。それがあなたの望むものだとすれば、あなたはこのようなことをします。もちろん

// Assumes myStuff is where all of your data is right now 
var startsWith = myStuff.Where(x => x.MyString.StartsWith("free sample")); 
var endsWith = myStuff.Where(x => x.MyString.EndsWith("arrest me")); 

// Now you can do whatever comparisons between the two lists you need 

、あなただけの「無料サンプル」で始まり、で終わること、それらのすべてをしたい場合は、ちょうどあなたが言及機能は単なる文字列です。この

var hasBoth = myStuff.Where(x => x.MyString.StartsWith("free sample") && x.MyString.EndsWith("arrest me")) 
0

を行うことができます「私を逮捕」機能。 s.StartsWith("abc")およびs.EndsWith("xyz")。 LINQクエリでは、where句でそれらを使用できます。

var startIndexes = phrases 
    .Where(p => p.StartsWith("free sample") 
    .Select((p, i) => i); 

var endIndexes = phrases 
    .Where(p => p.EndsWith("arrest me") 
    .Select((p, i) => i); 

これらの2つのクエリは、それぞれ特定の文字列で始まるフレーズのインデックスを返します。インデックスを第2のパラメータとして受け入れるselectのオーバーロードを使用します。

関連する問題