1

次のクエリを実行しようとしています(.StartsWithに注意してください)。

return (from p in _session.Linq<Profile>()
        where (p.Firstname + " " + p.Lastname).StartsWith(wildcard)
        select p).ToList();

これはスローします:プロパティを解決できませんでした:Firstname.Lastname。

私がこれを行う場合:

return (from p in _session.Linq<Profile>()
        where p.Firstname.StartsWith(wildcard)
        select p).ToList();

すべてが機能しています。どうすればいいの?

前もって感謝します!

4

2 に答える 2

2

Where Expression、文字列の連結を処理する方法を知りません。値ではなく、プロパティを理解しようとしています。

また、将来の参照のために、concatを使用したStartsWithと、concatを使用しないもう一方のStartsWithは、実際には同じものを返します。

これは、あなたの望むことですか?

return (from p in _session.Linq<Profile>()
        where p.Firstname.StartsWith(wildcard) || p.Lastname.StartsWith(wildcard)
        select p).ToList();
于 2009-10-18T14:35:05.053 に答える
1

更新:新しい洞察と編集された質問に基づいて回答を書き直しました。

何が入っwildcardていて、期待される出力と入力は何ですか?連結"Abel" + " " + "Braaksma"すると、trueが返されるか、wildcard.StartsWith("Abel")または戻りwildcard.StartsWith("Abel Br")ませんwildcard.StartsWith("Braaks")Contains代わりに意味するのでしょうか?しかし、これはあなたのエラーを解決しません:

あなたが受け取る例外は、あなたのコードからではなく、NHibernateから来ているようです。Lastnameデータベーステーブルへの正しいマッピングがない可能性はありますか?スタックトレースを表示できますか?LINQステートメントのコンテキスト外でプロパティにアクセスできますが、テーブルのデータでいっぱいですか?

于 2009-10-18T14:20:37.833 に答える