この例外を返すメソッドがあります。 LINQ to Entitiesは、 'System.String stringCutter(System.String)'メソッドのメソッドを認識せず、このメソッドをストア式に変換することはできません。linqインラインストリング操作
public List<ProductReqNoDate> GetRequestsQuery()
{
var query = (from r in db.talepler
select new ProductReqNoDate
{
talepEdenBirim = r.talepEdenBirim,
talepNo = r.talepNo,
talepTarihi = r.talepTarihi,
urunAdi = stringCutter((from p in db.urunler
where p.talepNo == r.talepNo
select p.urunAd).FirstOrDefault()) // <--This
}).AsQueryable();
return query.ToList();
}
string stringCutter(string txt)
{
return string.IsNullOrEmpty(txt) ? "" : txt.Length <= 30 ? txt : txt.Substring(0, 30) + "...";
}
この文字列操作をインラインで使用すると、動作します。しかし、その長すぎる、
urunAdi = ((from p in db.urunler where p.talepNo == r.talepNo select p.urunAd).FirstOrDefault()).Length <= 30 ?
((from p in db.urunler where p.talepNo == r.talepNo select p.urunAd).FirstOrDefault()) :
((from p in db.urunler where p.talepNo == r.talepNo select p.urunAd).FirstOrDefault()).Substring(0, 30) + "..."
がどのように私は(p.talepNo == r.talepNoがp.urunAdを選択db.urunlerのpから)参照することができ.FirstOrDefault())多分、TXTなど。だから私はlikelineのようなstringCutterメソッドを使用することができます:
urunAdi=string.IsNullOrEmpty(txt) ? "" : txt.Length <= 30 ? txt : txt.Substring(0, 30) + "...";
このコードを短縮する方法はありますか? 、thanks
私はそれをやってみたかったのすべてだということ:あなたは、あなたはこのように、あなたのメソッドを呼び出すために
IEnumerable<>
の投影方法を使用することができ、最初のメモリに文字列を持参する必要があります。どうもありがとうございます – blackraist