簡體   English   中英

如何將IEnumerable <int>轉換為Int32

[英]How do you convert IEnumerable<int> to an Int32

我有一個linq查詢將返回1個結果,這將是一個整數。 我想將它分配給一個Int32變量以便稍后使用,但是我得到一個錯誤,它讀取“int不包含RatingNumber的定義而且沒有擴展方法可以找到類型為int的第一個參數的RatingNumber(你是否遺漏了) using指令或程序集引用?)

這是調用查詢的代碼

IEnumerable<int> newRatingNumber = getNewRecipeNumbers.newRatingNum();

        foreach (var a in newRatingNumber)
        {
            ratingNumber = a.RatingNum;
        }

這是查詢:

 public IEnumerable<int> newRatingNum()
    {
        ratingTableAdapter.Fill(recipeDataSet.Rating);
        var newRatingNum = (from a in recipeDataSet.Rating
                            where a.UserRating == 0 &&
                            a.FamilyRating == 0 &&
                            a.HealthRating == 0 &&
                            a.EaseOfCooking == 0 &&
                            a.CookingTime == 0
                            select a.RatingNum);
        return newRatingNum;
    }

我嘗試使用Convert.ToInt32將結果轉換為int,這消除了編譯錯誤,但是這創建了一個InvalidCastException。 有人有主意嗎?

謝謝您的幫助

克雷格

Linq查詢的結果不是單個Int值,而是IEnumerable。 因此,您需要從中獲取單個值,在您的情況下,這是第一個值:

var newRatingNum = (from a in recipeDataSet.Rating
                        where a.UserRating == 0 &&
                        a.FamilyRating == 0 &&
                        a.HealthRating == 0 &&
                        a.EaseOfCooking == 0 &&
                        a.CookingTime == 0
                        select a.RatingNum).FirstOrDefault();

FirstOrDefault()將返回FirstOrDefault()的第一個值,如果Enumberable為空,則返回0。

如果你有一個List<Int32> ,理論上你有多個。 您可以使用First()Last()Single()從該列表中提取單個元素。 它們都有OrDefault()版本,如果列表為空則返回0 - 否則它們會出錯。

你不能使用Single或First方法隔離單個Int32嗎? 當你需要時,IEnumerable隱含很多。

暫無
暫無

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

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