1

我的结构如下。

public class CategoryClass
{
    public decimal Category_ID { get; set; }
    public string Category_Name { get; set; }
    //public System.Nullable<char> _Category_Type;
    public ObservableCollection<DAL.SubCategoryClass> SubCat { get; set; }
}

public class SubCategoryClass
{
    public decimal Sub_Category_ID { get; set; }
    public string Sub_Category_Name { get; set; }
    public decimal Category_ID { get; set; }
}

我需要使用 LINQ 填充数据。

我这里有一些代码,请纠正我以解决它。

public ObservableCollection<DAL.CategoryClass> GetCategoryandSubCategory()
    {
        var cat = from c in dbc.Categories
                  select new DAL.CategoryClass
                  {
                      Category_ID = c.Category_ID,
                      Category_Name = c.Category_Name,
                      SubCat = from d in dbc.Sub_Categories
                               where d.Category_ID == c.Category_ID
                               select new DAL.SubCategoryClass
                              {
                                  Sub_Category_ID = d.Sub_Category_ID,
                                  Sub_Category_Name = d.Sub_Category_Name,
                                  Category_ID = d.Category_ID
                              }
                  };
    }

还建议我一些 WPF 中的验证技术示例。

4

3 回答 3

0
public IEnumerable<DAL.CategoryClass> GetCategoryandSubCategory()
    {
ObservableCollection<DAL.SubCategoryClass> s = new ObservableCollection<DAL.SubCategoryClass>();

        var cat = from c in dbc.Categories
                  select new DAL.CategoryClass
                  {
                      Category_ID = c.Category_ID,
                      Category_Name = c.Category_Name,
                      SubCat =s.Add( from d in dbc.Sub_Categories
                               where d.Category_ID == c.Category_ID
                               select new DAL.SubCategoryClass
                              {
                                  Sub_Category_ID = d.Sub_Category_ID,
                                  Sub_Category_Name = d.Sub_Category_Name,
                                  Category_ID = d.Category_ID
                              }
                  };).ToList()

                      return cat ;
    }

希望它和你一起工作

于 2013-05-06T21:50:53.960 回答
0

一种选择是只返回一个 IEnumerable。
这可能会满足您的需求。

如果您需要 ObservableCollection,那么您需要新建它。

对于列表只是 .ToList()

至于验证一次一个问题。
从搜索 MSDB 进行验证开始。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        System.Diagnostics.Debug.WriteLine(OCint.Count.ToString());
    }

    List<SimpleClass> baseList = new List<SimpleClass> { new SimpleClass(1), new SimpleClass(2), new SimpleClass(3) };

    public IEnumerable<SimpleClass> iEint
    {
        get { return baseList.Where(x => x.ID < 3).Select(w=> new SimpleClass(w.ID)); }
    }

    public List<SimpleClass> Lint
    {
        get { return iEint.ToList(); ; }
    }

    public ObservableCollection<SimpleClass> OCint
    {
        get { return new ObservableCollection<SimpleClass>(iEint); }
    }
}
public class SimpleClass 
{
    public Int32 ID { get; private set; }
    public SimpleClass ( Int32 id) { ID = id; }
}
于 2013-05-06T17:25:17.540 回答
0

如果您希望 GetCategoryandSubCategory() 返回 ObservableCollection,当 dbc.Categories 更改或 CategoryClass (SubCotegory) 属性更改时会自动刷新,您可以使用我的ObservableComputations库。使用该库,您可以编写代码:

    public ObservableCollection<DAL.CategoryClass> GetCategoryandSubCategory()
    {
        var cat = dbc.Categories.Selecting(c =>
                  new DAL.CategoryClass
                  {
                      Category_ID = c.Category_ID,
                      Category_Name = c.Category_Name,
                      SubCat = dbc.Sub_Categories
                               .Filtering(d => d.Category_ID == c.Category_ID)
                               .Selecting(d => new DAL.SubCategoryClass
                              {
                                  Sub_Category_ID = d.Sub_Category_ID,
                                  Sub_Category_Name = d.Sub_Category_Name,
                                  Category_ID = d.Category_ID
                              })
                  });
    }

要使上面的代码工作 dbc.Categories 和 dbc.Sub_Categories 必须是ObservableCollection类型,并且代码中提到的所有类都必须实现INotifyPropertyChanged

于 2019-11-21T11:33:19.120 回答