gpt4 book ai didi

bitwise-operators - 在 LINQ 查询中使用按位运算

转载 作者:行者123 更新时间:2023-12-04 17:23:30 25 4
gpt4 key购买 nike

鉴于以下枚举

[Flags]
public enum Trans{
Purchase =1,
Sale=2,
All = Purchase | Sale
};

还有下面的课
public class Person
{
public string Name;
public Trans TransType;
}

以及以下数据结构
var people = new List<Person>();
people.Add(new Person {Name="James", TransType = Trans.Purchase});
people.Add(new Person {Name="Nancy", TransType = Trans.Sale});
people.Add(new Person {Name="Heather", TransType = Trans.All});
people.Add(new Person {Name="Duane", TransType = Trans.All});

我正在尝试查询满足某些条件的人的列表。

让所有人都拥有 Trans.Purchase(James、Heather 和 Duane)
var query = from p in people where ( (p.TransType & Trans.Purchase) == Trans.Purchase) select p;

让所有人都参与 Trans.Sale(Nancy、Heather 和 Duane)
var query = from p in people where ( (p.TransType & Trans.Sale) == Trans.Sale) select p;

我需要在 LINQ 查询的 where 子句中指定什么才能返回每个人 要么 转购、转售 或两者 (即Trans.All)? (詹姆斯。南希、希瑟和杜安)

编辑
某些上下文 - TransType 存储在数据库中,并且正在尝试编写一个屏幕,其中用户指定了 TransType,并且 SQL 查询会按照上面指定的方式提取数据

最佳答案

您可以使用此查询:

var query = from p in people 
where (p.TransType.HasFlag(Trans.Purchase) || p.TransType.HasFlag(Trans.Sale))
select p;

查询也可以这样写:
var query = from p in people 
where ((p.TransType & Trans.All) > 0)
select p;

关于bitwise-operators - 在 LINQ 查询中使用按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722780/

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