0

我正在尝试使用控制器中的读取功能填充 Kendo 下拉列表,但这样做的方式允许我根据视图中的列从一个表或视图中获取项目。

前任。

public class AlternateCountry  // <-- Table
{
    public Guid CountryGUID { get; set; }
    public string Name { get; set; }
}
public class Countries // <-- View
{
    public bool hasAltName { get; set; }
    public Guid GUID { get; set; }
    public string Name { get; set; }
}

我想显示“国家/地区”名称列值,除非我们有该国家/地区的备用名称。然后它将在“AlternateCountry”表中显示名称列。就像是:

var getCountries = (from c in db.Countries
                            join alt in db.AlternateCountry on c.GUID equals alt.CountryGUID
                            where c.hasAltName == true
                            select new { 
                                GUID = c.GUID, 
                                Name = alt.Name 
                            }).ToList();
return Json(getCountries, JsonRequestBehavior.AllowGet);

问题是当备用名称为假时,这并没有考虑到从国家视图中获取“名称”。我可以复制这些块中的另一个并进行更改c.hasAltName == false,但是如何将这两个块合并到一个 DataSourceResult 集中?

4

1 回答 1

0

实际上,我可以通过两个查询的联合来解决这个问题——一个用于没有备用名称的查询,一个用于有备用名称的查询:

var realCountries = (from c in db.Countries
                        where c.hasAltName == false
                        select new { 
                            GUID = c.GUID, 
                            Name = c.Name 
                        }).ToList();

var fakeCountries = (from c in db.Countries
                        join alt in db.AlternateCountry on c.GUID equals alt.CountryGUID
                        where c.hasAltName == true
                        select new { 
                            GUID = alt.GUID, 
                            Name = alt.Name 
                        }).ToList();

var allCountries = realCountries.Union(fakeCountries);
return Json(allCountries, JsonRequestBehavior.AllowGet);
于 2014-08-09T04:25:26.910 回答