簡體   English   中英

在C#中轉換類型

[英]Converting types in c#

沒有foreach,有沒有更好的方式編寫此代碼? 我想從類型為int的IEnumerable中添加項目(管轄區),並將其轉換為包含屬性Ref的IList,應在此處進行設置。

public class TrackDataFilter
{
    public TrackDataFilter(IEnumerable<int> firmRef, int? superSectorRef, DateTime from, DateTime to, int userFirmRef) : this()
    {
        Firms = firmRef.Select(x => new TrackFilterGenericRef { Ref = x, Type = ContentTypes.Firm, Description = "" });
        SuperSectorRef = superSectorRef;
        From = from;
        To = to;
        UserFirmRef = userFirmRef;
    }

    public TrackDataFilter()
    {
        Workareas = new List<TrackFilterGenericRef>();
        Jurisdictions = new List<TrackFilterGenericRef>();
        Tags = new List<TrackFilterGenericRef>();
        Firms = Enumerable.Empty<TrackFilterGenericRef>();
    }

    public IList<TrackFilterGenericRef> Jurisdictions { get; set; } 
    ...
}   

public class TaxiBriefingFilter
{

    public IEnumerable<int> Jurisdictions { get; set; }
    ...
}

// add items in IEnumerable<int> Jurisdictions into IList<TrackFilterGenericRef>

var filter = new TaxiBriefingFilter();

var dataFilter = new TrackDataFilter(new int[] { companyId }, null, from, to, userFirmRef);

foreach (var jurisdictionRef in filter.Jurisdictions)
{
    dataFilter.Jurisdictions.Add(new TrackFilterGenericRef { Ref = jurisdictionRef});
}

var jurisdictions = trackAnalyticsService.GetJurisdictions(dataFilter, maxJurisdictions);
...

您可以使用LINQ表示相同的邏輯,但是在這種情況下,我認為它不容易閱讀。 性能應該大致相同。

using System.Linq;
...
var filter = new TaxiBriefingFilter();
var dataFilter = new TrackDataFilter(new int[] { companyId }, null, from, to, userFirmRef);
dataFilter.Jurisdictions.AddRange(
    filter.Jurisdictions.Select(jref => new TrackFilterGenericRef { Ref = jref }));

你的意思是

using System.Linq;
...
Jurisdictions = Firms.ToList();

要么

Jurisdictions = firmRef.Select(x => new TrackFilterGenericRef { Ref = x, Type = ContentTypes.Firm, Description = "" }).ToList();

在第一個示例中,您將獲得具有與“可枚舉的Firms ”中相同實例的列表。 在第二個中,您將在“ Jurisdictions列表中獲得包含新實例的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM