作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个字符串,名称以半逗号分隔:
string names = "Jane;Harry";
我还有一个客户对象列表:
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
List<Customer> customers = new List<Customer>();
customers.Add(new Customer(){FirstName="John", LastName="Doe"});
customers.Add(new Customer(){FirstName="Jane", LastName="Doe"});
customers.Add(new Customer(){FirstName="Harry", LastName="Potter"});
var query = from c in customers
select c;
如何创建只返回名字在半逗号分隔列表中的客户的查询?
类似于 T-SQL SELECT FistName FROM customer WHERE FirstName IN (list)
(有点)
最佳答案
好吧,您确实应该首先将字符串拆分 - 否则即使列表是“Janet;Harry”,您也会得到“Jane”的匹配项。
你可以这样做:
string[] validNames = names.Split(';');
var query = customers.Where(c => validNames.Contains(c.FirstName));
另一种选择是使用 HashSet
,当列表非常大时,它的性能会好很多:
HashSet<string> validNames = new HashSet<string>(names.Split(';'));
var query = customers.Where(c => validNames.Contains(c.FirstName));
我在这里使用点表示法而不是查询表达式,因为当您只应用一两个子句时它会更简单。但是,作为查询表达式,它将是:
var query = from c in customers
where validNames.Contains(c.FirstName)
select c;
关于c# - Usinq Linq 选择以半逗号分隔的字符串中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536925/
我有一个字符串,名称以半逗号分隔: string names = "Jane;Harry"; 我还有一个客户对象列表: public class Customer { public string
我在 .net 框架项目中使用来自 Microsoft.Extensions.Logging 的 ILogger。 现在我想在容器中注册 ILogger 但我不能。所有答案都是关于 .net core
我是一名优秀的程序员,十分优秀!