我在Sql server&中有一个如下表格。我需要为特定的SubsId使用相同的AdminId获取EmailId,有人可以建议我一些更好的方法吗?
MAPPING table SubsId AdminId EmailId 1 1 1 1 1 2 1 2 3 1 2 2 2 2 2
我需要为特定的SubsId(比如1)使用相同的AdminId获取EmailIds。我这样做,有没有更好的办法?
public class Mapping
{
public int SubsId {get; set;}
public int AdminId {get; set;}
public List<int> LstEmailId {get; set;}
}
SELECT distinct(ADMINID) FROM MAPPING WHERE SUBSID = 1.
执行此查询在int列表中获取返回的admin ID,然后遍历列表中的所有admin ID。假设AdminIds位于列表LstAdminIds然后
var ObjLstMapping = new List<Mapping>();
foreach(AdminId in LstAdminIds )
{
var LstEmailIds = List<int>();
SELECT EMAILID FROM MAPPING WHERE SUBSID=1 AND ADMINID = AdminId
// execute this query which will return a set of rows. Loop through each row & add to the list LstEmailIds
while(ObjSqldataReader.Read())
{
LstEmailIds.Add(Convert.Tont32(ObjSqldataReader["EMAILID"]))
}
ObjLstMapping. Add(new Mapping
{
SubsId = 1,
AdminId = AdminId,
LstEmailId = LstEmailIds
});
}
答案 0 :(得分:0)
我认为您可以通过使用SQL Server更轻松地获得此答案。 (这是它要做的事情。)尝试替换你的查询:
SELECT distinct(ADMINID) FROM MAPPING WHERE SUBSID = 1
用这个:
SELECT * FROM MAPPING WHERE SUBSID = 1 AND EmailId = AdminId
(理想情况下,您应该避免使用&#34;选择*&#34;并实际明确地列出您的列。这是一种很好的做法,有助于避免在表结构发生变化时出错。)更改查询应该会给你结果,而无需在C#应用程序中对数据进行任何后处理。