如何在 linq 中执行内部 select?

How do I do an inner select in linq?

我有一个名为 Customers 的数据库 table。我 运行 以下 sql 获取有关第一和第二客户的信息:

select FirstCustomerName, SecondCustomerName, 
* from Customers where FirstCustomerName = SecondCustomerName

当我在 sql 中 运行 它给了我我想要的东西,所以一个就可以了。问题是当我想在 C# 中的 Linq 中做同样的事情时。

为了用 Linq 实现同样的效果,我已经尝试过这个(仍然“不起作用”):

   InfoAboutBothCustomers = c.customers.FirstCustomerName == c.customers.SecondCustomerName.ToString()

注意:InfoAboutBothCustomers 在我的 ViewModel

中是一个 int

所以我的问题基本上是如何在 LINQ 中做同样的事情?

没有样本很难提供任何解决方案。但是你可以试试这个

InfoAboutBothCustomers = c.customers.Where(x=>x.FirstCustomerName == x.SecondCustomerName).FirstOrDefault()

如有错误/问题,请分享示例。

使用.Where操作

InfoAboutBothCustomers = c.customers.Where(c => c.FirstCustomerName == c.SecondCustomerName).FirstOrDefault();

我不确定 InfoAboutBothCustomers 中您想要什么值。你的 SQL 语句 return 有两个值,你说你想要一个 int。 c.customers.FirstCustomerName == c.customers.SecondCustomerName.ToString() 将 return 一个布尔值来表示它们是否相等。

如果您想要一个或多个符合您条件的 ID,请尝试以下操作:

var ids = from cust in customers
          where cust.FirstCustomerName == cust.SecondCustomerName
          select cust.Id;

或者您可以使用其他答案中提到的内容,这更清晰,但请注意 FirstOrDefault 将 return 数据行。然后,您可以通过执行以下操作来指定所需的列 FirstOrDefault().Id;