ユーザーと同じタグを持つユーザーのリストを取得します。 そのためには、ネイティブフェッチとエンティティフレームワークを使用する必要があります。 私もEFでraw SQLを試しましたが、動作させることができませんでした。LINQのパラメータとしてネイティブJSON配列に反応します。
私は2つのフェッチを持っています。どちらも典型的なJSONオブジェクト配列を返します。だから私はこれをやっている:
var users = db.Users
.Include("TagUsers")
.Where(u => u.TagUsuario.Any(t => tags.Contains(t.idTag))).ToList();
タグ変数は、ネイティブが私のC#関数にタイプIList<>long
である、フェッチ・リアクトからオブジェクト配列です。
問題は、この配列は、一つの要素を持っている場合は、このconst tags = [1];
またはこの
{0}
Tags:
idTag: 1
Name: "MyTag"
のようにフェッチからのように、私はこのタグを持つ人々を返すことができますが、私はこのconst tags = [1, 2];
または
{0}
Tags:
idTag: 1
Name: "MyTag"
{1}
Tags:
idTag: 2
Name: "AnotherTag"
LINQリクエストで何も返されません。
は、しかし、私は私のC#関数にこのような何かを行う場合:
IList<>long tags = new List<>long();
tags.Add(1);
tags.Add(2);
は、それは完璧に動作します。
ここでの問題は、フェッチからのオブジェクト配列がLINQステートメント(Any、Contains)と "互換"でないことです。だから私は代替手段を探しています。
私は何をしなければなりませんか? IListパラメータを変更しますか?私はクラッシュせずにnullを受け入れるので、それを使用しています。 LINQを変更しますか? Raw SQLを使用しますか? オブジェクト配列ではなく、タグを持つint配列だけを取得する変換があるかもしれません。
ご協力いただきありがとうございます。
'tags 'を配列に投影できますか?たとえば、 'tags.Select(t => t.idTag) ' – Shoe
IListで" AsEnumerable() "を呼び出すと、 – barakcaf