gpt4 book ai didi

c# - Usinq Linq 选择以半逗号分隔的字符串中的项目?

转载 作者:太空狗 更新时间:2023-10-29 22:15:19 25 4
gpt4 key购买 nike

我有一个字符串,名称以半逗号分隔:

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/

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