Filtering cards into appropriate list elements
By simply adding the else condition to the if, the DRY warning will go away. It's just telling you that both the if and else block currently execute the same code, and can therefore be consolidated into a single block.
The comment // Find index of workcentres is misleading and should be removed.  
Don't use abbreviations for naming. It makes it very hard to read and understand the code.  
By extracting the condition to a separate method, you can use the Where() LINQ method and call AddRange() instead of repeatedly calling Add() .
Like @Paparazzi mentioned in a comment, you are filtering, rather than sorting, so you should change the name of the method.  


Implementing the changes (except for the naming), you code will look like the following:

private void WsSorter(WorkcentreList wcl, List&lt;WorkstationCard&gt; wscl)
{
    foreach (Workcentre wc in wcl.WcList)
    {
        wc.CardList.AddRange(wscl.Where(workstationCard =&gt; IsDesiredWorkstationCard(workstationCard, wc.WcName)));
    }
}
private bool IsDesiredWorkstationCard(WorkstationCard workstationCard, string workCentreName)
{
    return !(workstationCard.WorkcentreNo == MAIN_WORKCENTRE_1 ||
             workstationCard.WorkcentreNo == MAIN_WORKCENTRE_2 ||
             workstationCard.WorkcentreNo == MAIN_WORKCENTRE_3 ) ||
             workstationCard.WorkcentreNo == workCentreName
}