我有一個方法返回這個異常。 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) + "..."
我怎麼能指(上接第在db.urunler其中p.talepNo == r.talepNo選擇p.urunAd).FirstOrDefault())爲TXT可能;所以我可以使用stringCutter內聯方法如:
urunAdi=string.IsNullOrEmpty(txt) ? "" : txt.Length <= 30 ? txt : txt.Substring(0, 30) + "...";
是否有縮短此代碼的方法。 ,謝謝
這就是我想做的事吧。非常感謝 – blackraist 2012-01-07 12:26:29