Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建LINQ请求_C#_Linq - Fatal编程技术网

C# 如何创建LINQ请求

C# 如何创建LINQ请求,c#,linq,C#,Linq,我无法创建LINQ请求。 我有一个基本要求: var result = from i in _dbContext.Users where i.ID != CurrentUserID && //i.UserType.UserTypeID == (from a in _dbContext.UserTypes where a.UsersSelectMeetingCriteria.Any(

我无法创建LINQ请求。 我有一个基本要求:

        var result = from i in _dbContext.Users
                     where i.ID != CurrentUserID &&
                     //i.UserType.UserTypeID == (from a in _dbContext.UserTypes where a.UsersSelectMeetingCriteria.Any(p => p.ID == CurrentUserID) select a.UserTypeID).FirstOrDefault() &&
                     i.Services.Any(p => p.UsersSelectMeetingCriteria.Any(k => k.ID == CurrentUserID)) &&
                     i.GeographicalAreas.Any(p=>p.UsersSelectMeetingCriteria.Any(o=>o.ID == CurrentUserID)) &&
                     i.MultiplyItems.Any(r => (r.UsersSelectMeetingCriteria.Any(q => q.ID == CurrentUserID) && r.ItemType == MultiplyItemKeys.USER_TYPE)) &&
                     i.MultiplyItems.Any(s => (s.UsersSelectMeetingCriteria.Any(q => q.ID == CurrentUserID) && s.ItemType == MultiplyItemKeys.COMPANY_INVOLVED)
                     )

                     select new DataTable.UserModel()
                     { ... };

但我需要4级搜索。如果所有4个都正常,那么这是第一级用户,如果只有3个(但第4个不是)-级别2,如果2-是,2-否,那么级别3,如果只有一个匹配-级别4。如何做到这一点?

未经测试,在黑暗中进行了相当疯狂的刺杀,但这可能会为您指明正确的方向:

var result = from i in _dbContext.Users
             let check1 = i.Services.Any(p => p.UsersSelectMeetingCriteria.Any(k => k.ID == CurrentUserID))
             let check2 = i.GeographicalAreas.Any(p=>p.UsersSelectMeetingCriteria.Any(o=>o.ID == CurrentUserID))
             let check3 = i.MultiplyItems.Any(r => (r.UsersSelectMeetingCriteria.Any(q => q.ID == CurrentUserID) && r.ItemType == MultiplyItemKeys.USER_TYPE))
             let check4 = i.MultiplyItems.Any(s => (s.UsersSelectMeetingCriteria.Any(q => q.ID == CurrentUserID) && s.ItemType == MultiplyItemKeys.COMPANY_INVOLVED))
             let level = 5 - (check1 ? 1 : 0) - (check2 ? 1 : 0) - (check3 ? 1 : 0) - (check4 ? 1 : 0)
             where i.ID != CurrentUserID && level <= 4
             select new {i, level};                 
var result=from i in_dbContext.Users
让check1=i.Services.Any(p=>p.UsersSelectMeetingCriteria.Any(k=>k.ID==CurrentUserID))
让check2=i.GeographicalAreas.Any(p=>p.UsersSelectMeetingCriteria.Any(o=>o.ID==CurrentUserID))
让check3=i.MultiplyItems.Any(r=>(r.UsersSelectMeetingCriteria.Any(q=>q.ID==CurrentUserID)和&r.ItemType==MultiplyItemKeys.USER\u TYPE))
让我们检查4=i.MultiplyItems.Any(s=>(s.UsersSelectMeetingCriteria.Any(q=>q.ID==CurrentUserID)和&s.ItemType==MultiplyItemKeys.COMPANY)
设级别=5-(检查1?1:0)-(检查2?1:0)-(检查3?1:0)-(检查4?1:0)

我的身份证在哪里CurrentUserID&&level您所说的级别是什么意思?注释代码的意图是什么?您希望实现什么样的精确过滤?这个问题可以使用一个更好的解释示例,我们不知道各种实体之间的关系是什么。同样好的还有一些示例输入和期望的输出,包括为什么一个导致另一个。