我想获得一个与用户具有相同标签的人员列表。 为此我需要使用react native fetch和实体框架。 我也尝试过一些带有EF的原始sql,但是无法使它工作,只是不知道如何。
我有两个提取。两者都返回典型的JSON对象数组。所以我这样做:
override func viewDidLoad() {
super.viewDidLoad()
//INPUT BOX - User Input!
let Answer : UITextField = UITextField(frame: CGRect(x: 35, y: 150, width: 250, height:50))
Answer.placeholder = "Enter Your Answer"
Answer.font = UIFont.init(name:"times", size: 24)
Answer.backgroundColor = UIColor(red:0xff ,green:0xff, blue:0x88 ,alpha:1)
self.view.addSubview(Answer)
//BUTTON - Check Answer!
let Button : UIButton = UIButton(frame: CGRect(x: 35, y: 200, width: 250, height:50))
Button.setTitle("Submit Answer", for: .normal)
Button.titleLabel!.font = UIFont.init(name:"times", size: 24)
Button.backgroundColor = UIColor(red:0x00 ,green:0x00, blue:0x00 ,alpha:1)
Button.addTarget(self, action: #selector(CheckAnswer), for: .touchUpInside)
self.view.addSubview(Button)
}
func CheckAnswer(_ sender: UIButton){
if Answer.text == "answer" || Answer.text == "Answer"
{ print("Correct ! Response") }
else { print("Incorrect x Response") }
}
tags变量是来自React Native Fetch的对象数组,在我的C#函数中属于var users = db.Users
.Include("TagUsers")
.Where(u => u.TagUsuario.Any(t => tags.Contains(t.idTag))).ToList();
类型。
问题是如果这个数组有一个元素,比如IList<>long
或者像这样的提取
const tags = [1];
我可以返回带有此标记的人,但如果我喜欢这个{0}
Tags:
idTag: 1
Name: "MyTag"
或
const tags = [1, 2];
它在我的LINQ请求中没有返回任何内容。
但如果我在C#函数上做了类似的事情:
{0}
Tags:
idTag: 1
Name: "MyTag"
{1}
Tags:
idTag: 2
Name: "AnotherTag"
效果很好。
这里的问题是fetch中的对象数组与LINQ语句(Any,Contains)不“兼容”。所以我正在寻找替代方案。
我该怎么办? 更改IList参数?我正在使用它,因为接受null而不会崩溃。 改变LINQ? 使用Raw SQL? 也许有些转换只能获得带有标签的int数组,而不是对象。
感谢任何提示和解决方案。
答案 0 :(得分:0)
你可以尝试从标签中获取idTags并使用它如下所示。
var idTags = tags.Select(t => t.idTag);
var users = db.Users
.Include("TagUsers")
.Where(u => u.TagUsuario.Any(t => idTags.Contains(t.idTag))).ToList();