【发布时间】:2017-08-29 14:25:40
【问题描述】:
我想获取与用户具有相同标签的人员列表。 为此,我需要使用 react native fetch 和实体框架。 我也用 EF 尝试了一些原始 sql,但无法使其工作,只是不知道如何。
我有两个提取。两者都返回一个典型的 JSON 对象数组。所以我正在这样做:
var users = db.Users
.Include("TagUsers")
.Where(u => u.TagUsuario.Any(t => tags.Contains(t.idTag))).ToList();
tags 变量是来自 React Native Fetch 的对象数组,在我的 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);
效果很好。
这里的问题是来自 fetch 的对象数组与 LINQ 语句 (Any, Contains) 不“兼容”。所以我正在寻找替代方案。
我该怎么办? 更改 IList 参数?我使用它是因为接受 null 而不会崩溃。 更改 LINQ? 使用原始 SQL? 也许一些转换只得到一个带有标签的 int 数组,而不是一个对象。
感谢您提供任何提示和解决方案。
【问题讨论】:
-
你能把
tags投影到一个数组中吗?例如tags.Select(t => t.idTag) -
尝试在 IList 上调用“AsEnumerable()”
标签: arrays entity-framework linq react-native fetch