2013年6月5日 星期三

{C#} yield 使用

Yield
Foreach 中使用

//逐一帶出Enumerable 內資料 並回傳IEnumerable<class>  型態結果
foreach (var aa in IEnumerable)
{
    yield return new class{
       orderNo=aa.orderNo,
       ProductName=aa.ProductName
    }
}

//只帶回第一筆資料
foreach (var aa in IEnumerable)
{
    return new class{
       orderNo=aa.orderNo,
       ProductName=aa.ProductName
    }
}

//當訂單號碼為1,就會結束迴圈
foreach (var aa in IEnumerable)
{
    if(aa.OrderNo==1)
       yield break;
}

PS.
1.Yield break;可在Try catch 中,但不可在Finally中
2.Yield return;不可在Try catch中,但可在Try-finally 的Try中

參考資訊:
http://www.dotblogs.com.tw/hatelove/archive/2012/05/10/introducing-foreach-ienumerable-ienumerator-yield-iterator.aspx
http://msdn.microsoft.com/zh-tw/library/9k7k7cf0.aspx
http://www.dotblogs.com.tw/dc690216/archive/2010/02/19/13697.aspx