gpt4 book ai didi

c# - LINQ 查询过滤数据?

转载 作者:行者123 更新时间:2023-11-30 21:34:58 26 4
gpt4 key购买 nike

我有一个表,其中包含 Branch IDsDepartment IDs。我有三个分支,第一个分支只有 1 个部门,第二个分支有两个部门,第三个分支有三个部门。

现在,我需要编写一个查询来查找具有部门 1 但没有部门的分支机构。 2和部门。 3.

这只是一个例子,我有一个更复杂的动态场景。我用这个例子来提出我的问题。

我附上图片以了解问题。

enter image description here

这里是查询:

db.ConnectedBRDE.Where(x => x.DeptId == 1 && x.DeptId != 2)
.Select(x => x.BranchId)
.ToList();

此查询提供了我所有的三个分支,而我只需要分支 1,因为这是唯一没有部门 2 的分支。

这部分 && x.DeptId != 2 我猜是错误的。我应该在此处写什么以使我的过滤器正常工作?

最佳答案

Stephen Muecke 的评论确实有效。

我在DotNetFiddle测试过了.

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
public static void Main(string[] args)
{

List<TestClass> lstOfItems = new List<TestClass>();

var itemOne = new TestClass(){BranchName = "Branch One", BranchId = 1, DeptId = 1};
var itemTwo = new TestClass(){BranchName = "Branch Two", BranchId = 2, DeptId = 1};
var itemThree = new TestClass(){BranchName = "Branch Two", BranchId = 2, DeptId = 2};
var itemFour = new TestClass(){BranchName = "Branch Three", BranchId = 3, DeptId = 1};
var itemFive = new TestClass(){BranchName = "Branch Three", BranchId = 3, DeptId = 2};
var itemSix = new TestClass(){BranchName = "Branch Three", BranchId = 3, DeptId = 3};

lstOfItems.Add(itemOne);
lstOfItems.Add(itemTwo);
lstOfItems.Add(itemThree);
lstOfItems.Add(itemFour);
lstOfItems.Add(itemFive);
lstOfItems.Add(itemSix);

var myList = lstOfItems.GroupBy(x => x.BranchName).Where(y => y.Count() == 1 && y.First().DeptId == 1).ToList();

foreach(var item in myList){
Console.WriteLine(item.Key);
}

// Output
// Branch One

}
}

public class TestClass
{
public string BranchName {get;set;}
public int BranchId {get;set;}
public int DeptId {get;set;}
}

基本上,一旦所有记录都按 BranchName 属性分组,那么我们要计算每个分支名称下的所有记录。如果计数等于 1 那么这意味着分支只有 1 记录.. 然后我们找到该记录的 DeptId 如果它等于 1 那么满足你的情况。

关于c# - LINQ 查询过滤数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49650922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com