2014-10-06 33 views
0

我有一個表如下在Sql服務器&我需要得到EmailIds具有相同的AdminId爲一個特定的SubsId,有人可以建議我一些更好的方法嗎? 得到EmailIds具有相同的AdminId爲一個特定的SubsId

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列表中的返回的管理標識符,然後遍歷列表中的所有管理標識符。假設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

我想你可以通過利用SQL Server更容易得到這個答案。 (這是一種有人提出要做的事情。)嘗試更換您的疑問:這個

SELECT distinct(ADMINID) FROM MAPPING WHERE SUBSID = 1 

SELECT * FROM MAPPING WHERE SUBSID = 1 AND EmailId = AdminId 

(理想情況下,你應該避免使用「SELECT *」,實際上名單這是一個很好的做法,如果表格結構發生變化,這將有助於避免錯誤。)更改查詢應該可以爲您提供結果,而無需在C#應用程序中對數據進行任何後處理。

相關問題