0
私は解決したエンティティに対してLINQに問題がありますが、正しい方法で問題を解決したいと考えています。 LINQでクエリを実行すると、私はもともと試みたASP.NET MVCクラスの継承とLINQ
namespace ShopTest.Models
{
public class Shop
{
public int ShopID { get; set; }
public string Name { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Postcode { get; set; }
public string Country { get; set; }
public decimal Latitude { get; set; }
public decimal Longitude{ get; set; }
}
[NotMapped]
public class ShopLocation : Shop
{
public decimal AddressLatitude { get; set; }
public decimal AddressLongitude { get; set; }
public decimal DistanceFromAddress
{
get
{
return Convert.ToDecimal(
Math.Sqrt(
Math.Pow(Convert.ToDouble(this.Latitude - this.AddressLatitude), 2.0)
+
Math.Pow(Convert.ToDouble(this.Longitude- this.AddressLongitude), 2.0)
)
* 62.1371192
);
}
}
}
}
:
decimal lat = Convert.ToDecimal(-33.8736510, NumberFormatInfo.InvariantInfo);
decimal lng = Convert.ToDecimal(151.2068896, NumberFormatInfo.InvariantInfo);
var nearbyShops = from c in db.Shops
where Math.Abs(c.lat - lat) < 0.25M &&
Math.Abs(c.lng - lng) < 0.25M
select new NearbyShopLocation()
{
StoreNumber = store.StoreNumber,
Address = store.Address,
City = store.City,
Region = store.Region,
CountryCode = store.CountryCode,
PostalCode = store.PostalCode,
Latitude = store.Latitude,
Longitude = store.Longitude,
AddressLatitude = lat,
AddressLongitude = lng
};
var nearbySortedShops = nearbyShops.ToList().OrderBy(s => s.DistanceFromAddress).ToList();
は、しかし、私はエラー「エンティティまたは複合型「ShopTest.Controllers.Shopsを取得保管
は、私は2つのクラスを持っています'LINQ to Entitiesクエリで構築できません "
私は以下のコードでこの問題を修正しましたが、これがうまくいかない理由がわかりません - MVCには新しくありがとうそれはありません。 :-)
var nearbyShops = (from c in db.Shops
where Math.Abs(c.lat - lat) < 0.25M &&
Math.Abs(c.lng - lng) < 0.25M
select new
{
StoreNumber = c.StoreNumber,
Address = c.Address,
City = c.City,
Country = c.Country,
PostalCode = c.PostalCode,
Latitude = c.Latitude,
Longitude = c.Longitude,
}).ToList().Select(l => new ShopLocation
{
Name = l.Name,
City = l.City,
State = l.State,
Country = l.Country,
Lat = l.Lat,
Lng = l.Lng,
AddressLatitude = lat,
AddressLongitude = lng
}).ToList().OrderBy(s => s.DistanceFromAddress).ToList();
これを正しく実行しましたか?より良い方法がありますか?
グレート応答、および完全に働きました。ありがとうございました! –