我的db表中有以下内容:
- MailingId | GroupName | ServiceId
- 1 | group1 | 3
- 2 | group1 | 5
- 3 | group1 | 8
- 4 | group2 | null
- 5 | group3 | null
...在我看来,我有两组复选框:
(服务)带有id的3,5,8 (serviceId).
的复选框列表
我需要使用LINQ选择以下内容:
选择我在ServiceId复选框列表中选择的行以及任何其他行。例如,如果我选中了ServiceId (3和5)和组"Group3“,那么我的输出将是MailingId: 1、3和5行。但是,如果我从(第一组复选框)中选择了任何服务,并且不从邮件组复选框中选择" Group1”,那么输出中不应该包含Group1行。
我在用EF4。请帮帮忙。谢谢
发布于 2011-03-28 09:27:52
这两个数组将是从您的视图中发布的选择。
int[] selectedservices = {3,5};
string[] selectedgroups = {"group3"};
using (Model model = new Model())
{
bool b = selectedservices.Contains(1);
var mailinglists = from m in model.MalingSet
where selectedgroups.Contains(m.GroupName)
&& ((m.ServiceId.HasValue && selectedservices.Contains(m.ServiceId.Value)) || m.ServiceId.HasValue == false)
select m.MailingId;
}发布于 2011-03-28 09:16:02
试试这样的东西。
var mailingGroup =
from m in Mailings
where m.ServiceId != null // or whatever other condition
group m by m.GroupName into g
select new
{
groupName = g.Key,
mailings = g
};发布于 2011-03-28 09:32:32
是哪里的条款不?
var a = new {m = 1, g = "group1", sid = 3};
var b = new {m = 2, g = "group1", sid = 5};
var c = new {m = 3, g = "group1", sid = 8};
var d = new {m = 4, g = "group2", sid = 0};
var e = new {m = 5, g = "group3", sid = 0};
var l = new List<dynamic>{a,b,c,d,e};
l.Where(it => ( new ArrayList{3, 5}).Contains(it.sid)
|| (new ArrayList{1, 5}).Contains(it.m)).Dump();http://www.linqpad.net/
https://stackoverflow.com/questions/5456767
复制相似问题