从列中获取值并根据值是不是正确显示该行中的所有内容(LINQ - c# web API)
Posted
技术标签:
【中文标题】从列中获取值并根据值是不是正确显示该行中的所有内容(LINQ - c# web API)【英文标题】:Grabbing value from column and show everything from that row depending if value is correct (LINQ - c# web API)从列中获取值并根据值是否正确显示该行中的所有内容(LINQ - c# web API) 【发布时间】:2021-09-13 00:34:47 【问题描述】:我有一个看起来像这样的数据库:
[ID] [5TypeOfIntegers] [TEXT] [name ID]
5TypeOfIntegers 有 5 个整数。 (1 - 5)。
我想从我的 5 种类型(值 2 和 4)中获取 2 个值,如果名称 ID 匹配,则获取数据,其他 3 个值(值 1,3 和 5)如果名称 ID 匹配,我想获取该数据不匹配。
例子:
[ID] [5TypeOfIntegers] [TEXT] [nameID] = User logged is 1.
0 2 bla 1 - GRAB DATA (Type is correct and user is correct))
1 3 bla 1 - DONT GRAB DATA (Type is wrong and user is correct)
2 3 bla 2 - GRAB DATA (Different ID from the person logged in, Type is correct)
我对 LINQ 代码的想法是这样的:
db.Where(e => e.nameID == 1).Select( e => e.5TypeOfIntegers == 2 && e.5TypeOfIntegers == 4)
但在那之后我有点迷路了,这甚至不起作用。 :(
感谢您的帮助!
【问题讨论】:
所以,需要明确的是,您拥有5TypeOfIntegers
列。如果 NameId 与您提供的 NameID 匹配,您希望使用 2 和 4 的行,然后在 NameID 与您提供的不匹配时抓取具有 1、3 和 5 的行。在这种情况下,您可以执行类似的操作(您传入的 nameID 是 nameIdVar db.Table.Where(e => (e.5TypeOfInterger in (2, 4) && e.nameID = nameIdVar) || (e.5TypeOfInterger in (1,3,5) && e.nameID != nameIdVar)
@chadk 所说的实际上是您所要求的,不是 IMO,或者问题不清楚或者是 meta.stackexchange.com/questions/66377/what-is-the-xy-problem,您能否详细说明用例是什么?
【参考方案1】:
所以,换句话说,你想要“not(type 1,3,5 and nameId = currentloggedin)”
var types = new[]1,3,5;
context.Whatever.Where(x => !(types.Contains(x.Type) && x.UserId == currentlyLoggedInUserId));
【讨论】:
以上是关于从列中获取值并根据值是不是正确显示该行中的所有内容(LINQ - c# web API)的主要内容,如果未能解决你的问题,请参考以下文章