鉴于以下枚举
[Flags]
public enum Trans{
Purchase =1,
Sale=2,
All = Purchase | Sale
};
Run Code Online (Sandbox Code Playgroud)
以下课程
public class Person
{
public string Name;
public Trans TransType;
}
Run Code Online (Sandbox Code Playgroud)
以及以下数据结构
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});
Run Code Online (Sandbox Code Playgroud)
我正在尝试查询符合某些条件的人的列表.
为所有人提供Trans.Purchase(詹姆斯,希瑟和杜安)
var query = from p in people where ( (p.TransType & Trans.Purchase) == Trans.Purchase) select p;
Run Code Online (Sandbox Code Playgroud)
让Trans.Sale(Nancy,Heather&Duane)的所有人
var query = from p in people where ( (p.TransType & Trans.Sale) == Trans.Sale) select p;
Run Code Online (Sandbox Code Playgroud)
我需要什么指定LINQ查询的WHERE子句中与回报大家要么 Trans.Purchase,Trans.Sale 或两者(即Trans.All)?(詹姆斯.南希,希瑟和杜安)
编辑 一些上下文 - TransType存储在数据库中,我试图写一个用户指定TransType的屏幕,一个SQL查询提取上面指定的数据
Ada*_*m S 10
您可以使用此查询:
var query = from p in people
where (p.TransType.HasFlag(Trans.Purchase) || p.TransType.HasFlag(Trans.Sale))
select p;
Run Code Online (Sandbox Code Playgroud)
查询也可以这样写:
var query = from p in people
where ((p.TransType & Trans.All) > 0)
select p;
Run Code Online (Sandbox Code Playgroud)