C# 林克通过几个词进行排序
如果searchWords包含相同的单词2次,我如何排列此列表C# 林克通过几个词进行排序,c#,linq,C#,Linq,如果searchWords包含相同的单词2次,我如何排列此列表 var resultList = from c in context.Category join q in context.Question on c.CategoryId equals q.CategoryId join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw from a2 in QuestAnsw.De
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
&& (searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
select new { Category = c, Question = q };
我可以像下面这样做一个if语句吗
&& (searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w))) if(true) order
select new { Category = c, Question = q };
我的上一个更改(它适用于子类别,但不适用于子类别)
如果要在顶部(或底部)显示匹配的项目,可以根据您的条件设置顺序:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending
select new { Category = c, Question = q };
此外,如果需要设置匹配项之间的顺序,可以向顺序匹配项添加其他排序表达式:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending,
a.Id ascending //<---additional sort expression
select new { Category = c, Question = q };
var resultList=来自context.Category中的c
在上下文中加入q。关于c.CategoryId的问题等于q.CategoryId
在上下文中加入a。在q上回答。QuestionId等于a。QuestionId进入QuestAnsw
来自QuestAnsw.DefaultIfEmpty()中的a2
其中q.CustomerId==CustomerId
订货人
(searchWords.Any(w=>a2.Text.Contains(w))
||searchWords.Any(w=>c.Text.Contains(w))
||searchWords.Any(w=>q.Text.Contains(w)))
下降,
a、 Id升序//如果要在顶部(或底部)显示匹配的项目,可以根据您的条件设置顺序:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending
select new { Category = c, Question = q };
此外,如果需要设置匹配项之间的顺序,可以向顺序匹配项添加其他排序表达式:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending,
a.Id ascending //<---additional sort expression
select new { Category = c, Question = q };
var resultList=来自context.Category中的c
在上下文中加入q。关于c.CategoryId的问题等于q.CategoryId
在上下文中加入a。在q上回答。QuestionId等于a。QuestionId进入QuestAnsw
来自QuestAnsw.DefaultIfEmpty()中的a2
其中q.CustomerId==CustomerId
订货人
(searchWords.Any(w=>a2.Text.Contains(w))
||searchWords.Any(w=>c.Text.Contains(w))
||searchWords.Any(w=>q.Text.Contains(w)))
下降,
a、 Id升序//如果要在顶部(或底部)显示匹配的项目,可以根据您的条件设置顺序:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending
select new { Category = c, Question = q };
此外,如果需要设置匹配项之间的顺序,可以向顺序匹配项添加其他排序表达式:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending,
a.Id ascending //<---additional sort expression
select new { Category = c, Question = q };
var resultList=来自context.Category中的c
在上下文中加入q。关于c.CategoryId的问题等于q.CategoryId
在上下文中加入a。在q上回答。QuestionId等于a。QuestionId进入QuestAnsw
来自QuestAnsw.DefaultIfEmpty()中的a2
其中q.CustomerId==CustomerId
订货人
(searchWords.Any(w=>a2.Text.Contains(w))
||searchWords.Any(w=>c.Text.Contains(w))
||searchWords.Any(w=>q.Text.Contains(w)))
下降,
a、 Id升序//如果要在顶部(或底部)显示匹配的项目,可以根据您的条件设置顺序:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending
select new { Category = c, Question = q };
此外,如果需要设置匹配项之间的顺序,可以向顺序匹配项添加其他排序表达式:
var resultList = from c in context.Category
join q in context.Question on c.CategoryId equals q.CategoryId
join a in context.Answer on q.QuestionId equals a.QuestionId into QuestAnsw
from a2 in QuestAnsw.DefaultIfEmpty()
where q.CustomerId == customerId
orderby
(searchWords.Any(w => a2.Text.Contains(w))
|| searchWords.Any(w => c.Text.Contains(w))
|| searchWords.Any(w => q.Text.Contains(w)))
descending,
a.Id ascending //<---additional sort expression
select new { Category = c, Question = q };
var resultList=来自context.Category中的c
在上下文中加入q。关于c.CategoryId的问题等于q.CategoryId
在上下文中加入a。在q上回答。QuestionId等于a。QuestionId进入QuestAnsw
来自QuestAnsw.DefaultIfEmpty()中的a2
其中q.CustomerId==CustomerId
订货人
(searchWords.Any(w=>a2.Text.Contains(w))
||searchWords.Any(w=>c.Text.Contains(w))
||searchWords.Any(w=>q.Text.Contains(w)))
下降,
a、 你能详细说明一下你的代码是做什么的,你希望它做什么吗?从一个庞大的linq查询中找出它比阅读它应该做什么的描述更容易出错。你说它不适用于子类别是什么意思?你能添加示例数据吗?如果我搜索“生病”和“假期”(在我的ui中),它会显示我的菜单,按问题和标题类别排序,单词“生病”和“假期”都是。这是正确的。但我的菜单也有子类别。子类别可以是假期,问题是生病,例如,它不会订购它。只需标题类别和问题。向问题添加sreenshot或真实数据。我不知道你们的类的结构,也不明白你们能详细说明你们的代码是做什么的,你们希望它做什么吗?从一个庞大的linq查询中找出它比阅读它应该做什么的描述更容易出错。你说它不适用于子类别是什么意思?你能添加示例数据吗?如果我搜索“生病”和“假期”(在我的ui中),它会显示我的菜单,按问题和标题类别排序,单词“生病”和“假期”都是。这是正确的。但我的菜单也有子类别。子类别可以是假期,问题是生病,例如,它不会订购它。只需标题类别和问题。向问题添加sreenshot或真实数据。我不知道你们的类的结构,也不明白你们能详细说明你们的代码是做什么的,你们希望它做什么吗?从一个庞大的linq查询中找出它比阅读它应该做什么的描述更容易出错。你说它不适用于子类别是什么意思?你能添加示例数据吗?如果我搜索“生病”和“假期”(在我的ui中),它会显示我的菜单,按问题和标题类别排序,单词“生病”和“假期”都是。这是正确的。但我的菜单也有子类别。子类别可以是假期,问题是生病,例如,它不会订购它。只需标题类别和问题。向问题添加sreenshot或真实数据。我不知道你们的类的结构,也不明白你们能详细说明你们的代码是做什么的,你们希望它做什么吗?从一个庞大的linq查询中找出它比阅读它应该做什么的描述更容易出错。你说它不适用于子类别是什么意思?你能添加示例数据吗?如果我搜索“生病”和“假期”(在我的ui中),它会显示我的菜单,按问题和标题类别排序,单词“生病”和“假期”都是。这是正确的。但我的菜单也有子类别。子类别可以是假期,问题是生病,例如,它不会订购它。只需标题类别和问题。向问题添加sreenshot或真实数据。我不知道你的cl的结构