0

検索用語、クリックなどを含むエンティティのリストがあります。
ユーザーは、エンティティ間のクリック数を比較できる必要があります。つまり、検索の最初に「無料サンプル」という単語を含むすべてのエンティティと比較します。フレーズの最後に「arrest me」というフレーズを含むすべてのエンティティ。
複数の foreach と switch を使用してこれを行うことができます (ユーザーがクエリと文字列の一部を選択するため) が、Linq を使用することで「start with」関数と「end with」関数を使用できることを理解しています。案内していただけますか?

4

3 に答える 3

1

Where()条件を満たすエンティティのセットを返すLINQ :

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

Single()/SingleorDefault()複数のエンティティが見つかった場合、条件を満たす単一のエンティティを返すLINQ-例外がスローされます。

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"));

完全なリストについては、列挙可能なクラスメソッドを参照してください。

于 2012-04-24T13:54:14.287 に答える
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"))
于 2012-04-24T13:54:58.423 に答える
0

The functions you mention are just string functions. s.StartsWith("abc") and s.EndsWith("xyz"). In a LINQ query you can use them in a where clause.

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);

These two queries return the indexes of phrases that start, respectively end with a certain string. I use an overload of select that accepts the index as second parameter.

于 2012-04-24T13:58:39.807 に答える