我有十个字段的表。我需要在LINQ中进行搜索查询。 我的领域是:使用查询linq搜索空字段
名字(字符串),姓氏(字符串),FatherName(串),NotationId(INT),DebtPrice(INT),BRANCHNAME(串),DebtId(INT),MeliCode(串)
我的问题是:当用户不补领域,这个领域不应该在查询搜索使用
感谢。
收集Legal.View_Dossiers
我有十个字段的表。我需要在LINQ中进行搜索查询。 我的领域是:使用查询linq搜索空字段
名字(字符串),姓氏(字符串),FatherName(串),NotationId(INT),DebtPrice(INT),BRANCHNAME(串),DebtId(INT),MeliCode(串)
我的问题是:当用户不补领域,这个领域不应该在查询搜索使用
感谢。
收集Legal.View_Dossiers
您可以使用此代码:
var query = from d in datacontext.sample where
(TBoxFName.Text=="" || d.FirstName.Contains(TBoxFName.Text.Trim()))
&&(TBoxLName.Text == "" || d.LastName.Contains(TBoxLName.Text.Trim()))
&&(TBoxFatherName.Text == "" || d.FatherName.Contains(TBoxFatherName.Text.Trim()))
&& (TBoxPriceDebt.Text == "" || d.DebtPrice.ToString().Contains(TBoxPriceDebt.Text.Trim()))
&& (CBoxBranch.Text == "" || d.BranchName.Contains(CBoxBranch.Text.Trim()))
&&(TBoxDebt.Text == "" || d.DebtId.Contains(TBoxDebt.Text.Trim()))
&&(TBoxMeliCode.Text == "" || d.MeliCode.Contains(TBoxMeliCode.Text.Trim()))
select d;
为什么你要'TBoxFName.Text ==“”'???如果运行'd.FirstName.Contains(TBoxFName.Text.Trim())'并且'd.FirstName'具有值,则返回true。 –
,因为如果“TBoxFName.Text ==”“'then * firstname *”字段不是搜索查询的因素。 – aya
如果'TBoxFName.Text ==“”'为空,那么你的方法并非有用,那么确定如果d.FirstName不为null,则d.FirstName.Contains(TBoxFName.Text.Trim())'返回true,如果你想空检查,你应该这样做:'d.FirstName!= null && d.FirstName.Contains(TBoxFName.Text.Trim())'实际上按照你当前的方式,如果文本框有值并且输入字符串是d.FirstName是空的,那么你会得到一个异常。事实上,我确信你目前的方式并不能帮助OP。 –
我认为(目前还不清楚),你的意思是这样:
IQueryable<YourType> query = /* some basic query; maybe db.TheTable */
if(!string.IsNullOrEmpty(firstName))
query = query.Where(row => row.FirstName == firstName);
if(!string.IsNullOrEmpty(lastName))
query = query.Where(row => row.LastName == lastName);
if(!string.IsNullOrEmpty(fatherName))
query = query.Where(row => row.FatherName == fatherName);
// etc
var matches = query.Take(50).ToList();
这里采用查询组成发行最合适底层查询可以;例如,如果这是LINQ到SQL和firstName
和fatherName
提供的,你会得到这样的:
select top 50 {some columns} from [dbo].[TheTable] t
where t.FirstName = @p0 and t.FatherName = @p1
其中@p0
和@p1
是抱着值的参数。
你可以尝试写:
IEnumerable<YourType> query = //data taken from database
var queryWhere = query
.Where(x => x.FirstName == varFirstName || string.IsNullOrEmpty(x.FirstName))
.Where(x => x.LastName == varLastName || string.IsNullOrEmpty(x.LastName))
.Where(x => x.FatherName == varFatherName || string.IsNullOrEmpty(x.FatherName))
//...and so on...
.ToList();
这些是只有8场。我不明白 - 这是一个LINQ to SQL查询吗? LINQ到集合? – Aidan
这是从LINQ到SQL – aya