linq to entityの文字列の比較

1790 ワード

これをやったばかりです。文字列の比較に問題があります。linq to entityはsql文のような2つの文字列の比較はサポートされていません。
例えばsql:select*from  aaa where a.name''A 001'and a.name''B 001'
この場合はどう処理しますか?
linqを書く時からの考えはこのままです。

  
    
using (XTDBEntities edm = new XTDBEntities())
{
return edm.XT_Card.Where(s => s.CardNum >= startCode && s.CardNum <= endCode).Count();
}
しかし、聡明なあなたはこのコンパイルが通らないことを発見します。どうすればいいですか
 簡単な「点」によって、CompreToという拡張方法があることが分かりました。彼の定義を見てみます。
public int CompreTo(string streB)    System.Stringのメンバー
要約:この例を指定されたSystem.Stringオブジェクトと比較し、この例は順序指定されたSystem.Stringの前にあるか、後に同じ位置にあるかを示す。
パラメータ:str B:System.String。
戻り値:32ビットは、順序でvalueパラメータの前にあるか、後に同じ位置にあるかを示すシンボル整数を有する。この例は、ゼロ以下の値条件である。ゼロのこの例は、順序付け順序における位置は、strと同じである。この例がゼロより大きいのは、strの後にある。または-strはnullです。
これがあればずっと楽です。
上の言葉を改造します。
return edm.XT_Card.Count(s=>s.cardNum.cmapareto(startCode)==0&s.C.radNum.compreto(endCode)<=0);
このようにsqlの中の大きさに達しました。及び使用するbetween…andの効果