Linq 中查询一个表中指定的字段


Linq中查询一个表中指定的几个字段:

var ts = t.FindAllItems().Where(P => P.CompanyID == CurSiteUser.CompanyId).Select(s => new { BillPeriod = s.BillPeriod,FieldB=s.FieldB }).Distinct().ToList().OrderByDescending(s => s.BillPeriod).Take(24);

//   FindAllItems()为查询对应表的所有数据的方法;

// Where 里面为查询条件

// Select 为查询的筛选条件  new{}  里面就是要查询的字段

//Distinct() 为去除重复的查询

//ToList() 为将查询转换为List<>

//OrderByDescending()  表示排序字段及排序方法(倒序排列)

//Take(N)  表示查询前N条数据;

### 使用 LINQ 连接两个并返回指定属性 在 LINQ 查询中,可以通过 `join` 关键字将两个连接起来,并使用 `.Select()` 方法提取所需的特定属性。以下是一个完整的示例代码,展示如何实现这一需求: ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // 创建第一个的数据 List<Customer> customers = new List<Customer> { new Customer { Id = 1, Name = "Alice", CityId = 1 }, new Customer { Id = 2, Name = "Bob", CityId = 2 }, new Customer { Id = 3, Name = "Charlie", CityId = 1 } }; // 创建第二个的数据 List<City> cities = new List<City> { new City { Id = 1, Name = "New York" }, new City { Id = 2, Name = "Los Angeles" }, new City { Id = 3, Name = "Chicago" } }; // 使用 LINQ 的 join 和 select 提取所需字段 var queryResult = from customer in customers join city in cities on customer.CityId equals city.Id select new { CustomerName = customer.Name, CityName = city.Name }; foreach (var item in queryResult) { Console.WriteLine($"Customer: {item.CustomerName}, City: {item.CityName}"); } } } // 定义实体类 public class Customer { public int Id { get; set; } public string Name { get; set; } public int CityId { get; set; } // 外键 } public class City { public int Id { get; set; } public string Name { get; set; } } ``` #### 解析 1. **定义数据结构** 上述代码中创建了两个列分别示客户 (`customers`) 和城市 (`cities`) 。其中,客户的 `CityId` 是指向城市的外键[^3]。 2. **使用 `join` 执行联接操作** 在 LINQ 查询语法中,通过 `on ... equals ...` 指定联接条件。这里我们将 `customer.CityId` 与 `city.Id` 对应的值进行匹配[^4]。 3. **选择特定属性** 使用匿名类型的方式,在 `select` 子句中仅保留需要的结果列(即客户的名称和对应的城市名称)。这种方式不仅提高了性能还简化了结果集[^5]。 --- ### 注意事项 - 若存在一对多的关系,则可能会得到重复记录。这种情况下可以考虑使用 `GroupJoin` 或者进一步筛选逻辑来控制输出形式[^2]。 - 联接时需要注意两间的关键字段是否一致以及其数据类型兼容性问题。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值