2016-12-08 10 views
1

前回の質問で私が受け取った助け/提案で、私は計算されたプロパティに問題を絞り込むことができました。Lightswitchの計算されたプロパティを使用したLinqからSQLクエリフィルタ

ここで失敗したクエリフィルタです:正常に動作するようだが、そこにクエリが失敗する原因となるName

query = query.Where(a => a.collection.Any(b => b.Name.StartsWith(c)));

すべてが。 Namebの計算されたプロパティです。標準プロパティで置き換えると、クエリが機能します。

私はそれがSQLで意味することを理解していないので、私はそのプロパティでフィルタリングすることができるので、修正/置換する方法を理解できません。誰かがそのクエリの後ろに何が間違っているのかを説明できるなら、それは高く評価されるだろう。

+0

あなたの既存のクエリは例外をスローします。なぜなら、 'collection'がnullでも空でもなく、遭遇するといつでも例外をスローするからです。 – Greg

答えて

0

次に、あなたの目標を行うことができるはず。それは、コレクション内のExist場合に基づいており、あなたの開始条件を満たしているフィルタします

var start = "Joh"; 
var query = content.Where(entity => 
        entity.ExampleCollection.Exist(obj => 
        obj.Name.StartsWith(start)); 

+0

「存在」は定義されていません。私はLightswitch oobを使用しています。 – Mat

+0

あなたが指摘している「ヌル」コレクションの潜在的な問題は本当の問題ですが、私が修正しようとしている問題ではありません。 – Mat

2

計算されたプロパティは、基になるデータベースで定義されていないため、クエリで参照することはできません。

+0

それは私が考えていたものです。それを回避する方法はありますか? – Mat

+0

マットは頭の爪に当たっています。ここでは、 '計算されたプロパティ'とEFを処理する方法についてのいくつかの洞察を提供することができるよく書かれた記事です:http://daveaglick.com/posts/computed-properties-andentity-framework –

+0

@SRQCoder非常に良い記事!読書を続け、有望に見えます。 – Mat

関連する問題