0
我想获取与用户具有相同标记的人员列表。 为此,我需要使用反应原生提取和实体框架。 我也尝试了一些原始的SQL与EF,但无法使它的工作,只是不知道如何。将原生JSON数组作为参数反馈到LINQ包含中
我有两次抓取。两者都返回一个典型的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? 使用原始SQL? 也许一些转换只能得到一个带有标签的int数组,而不是一个对象。
感谢您的任何提示和解决方案。
您可以将'tags'投影到数组中吗?例如'tags.Select(t => t.idTag)' – Shoe
尝试在IList上调用“AsEnumerable()” – barakcaf