【问题标题】:React Native JSON Array as Parameter to LINQ Contains将本机 JSON 数组作为参数反应到 LINQ 包含
【发布时间】: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 =&gt; t.idTag)
  • 尝试在 IList 上调用“AsEnumerable()”

标签: arrays entity-framework linq react-native fetch


【解决方案1】:

您可以尝试从标签中获取 idTag 并使用它吗?

var idTags = tags.Select(t => t.idTag);
var users = db.Users
              .Include("TagUsers")
              .Where(u => u.TagUsuario.Any(t => idTags.Contains(t.idTag))).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多