Windows Phone 72012. 1. 30. 18:05

보통 Linq는 List의 내용을 건드리지만

이처럼 StackPanel이나 GridPanel같은 컨트롤에서도 사용할수 있다.

예를 들어 StackPanel에 CheckBox를 add하고 그 체크박스의 특정 Content만을 뽑고 싶을땐 이렇게 한다.

var temp = SelectedSeatPanel.Children.OfType<CheckBox>().Where(c => c.Content.Equals((sender as CheckBox).Content)).FirstOrDefault();

 

바로 OfType<T>를 하면 되는것이다.

Where<(c as CheckBox) => ….)나

(CheckBox)c => …)이렇게 시도하는 초보가 없길 바란다.

Posted by 동동(이재동)
Windows Phone 72011. 3. 15. 12:58

보통 컬렉션 안의 컬렉션 즉 List문 안에 List문 이 있으면

 

중첩 foreach문을 쓴다.

 

그러면 코드가 길어지고 깔끔해지지가 않는다.

 

foreach (Contact _contact in contacts)
{
    _contact.ID = 0;
    _contact.GroupID = 0;
    _contact.CompanyID = 0;
}

 

이런 For문이 있을때는

 

contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; });

 

이렇게 바꾸면 된다.

 

만약 list안의 list를 보고 싶으면

그냥

 

_collectionBooks.Collectionbook.ToList().ForEach(i => i.Collection.ForEach( c => {CheckCollectBookSheetAllCoinCal(c);}));
 

이런식도 된다. ToList()뒤에 foreach 그리고 메소드를 만들어서 깔끔하게 돌렸다.

 

원래는 이런 for문 이였다. ㄷㄷㄷ

foreach (var item in _collectionBooks.Collectionbook)
            {
               foreach (var collect in item.Collection)
                {
         if (collect.Item != null)
            {    
                int haveCollectionCoinCount = 0;
                foreach (var coinInfo in collect.Item)
                {
                    var isHaveCollectionCoin = CollectionCoins.Where(c => c.cid == coinInfo.cid).FirstOrDefault();
                    if (isHaveCollectionCoin != null)
                    {
                        haveCollectionCoinCount++;
                    }
                }
 
                if (haveCollectionCoinCount == collect.Item.Count)
                {
                    SaveCompleteCollectBookSheetHistoryTime(collect.ID);
                }
            }
                }
            }
Posted by 동동(이재동)