Tò mò - nó sẽ hoạt động IIRC; Tôi sẽ xem nếu tôi có thể làm một ví dụ nhanh - tuy nhiên, bạn có thể muốn kiểm tra xem bạn có tên enum đủ điều kiện (tức là bao gồm cả không gian tên).
[cập nhật] Từ here có vẻ như phiên bản RTM được gửi kèm với lỗi khi giải quyết enum. Một giải pháp được đề xuất (trên trang đó) là thêm tiền tố global::
. Nó hoạt động tốt cho tôi mà không có cách giải quyết này, vì vậy có thể nó được sửa trong 3.5 SP1? Nó cũng bị cáo buộc hoạt động tốt trong 3.5 nếu bạn sử dụng tên không đủ tiêu chuẩn nếu enum nằm trong cùng một không gian tên.
[ví dụ] Yup, làm việc tốt: với Northwind, tôi xác định một enum cho đất nước vận chuyển:
namespace Foo.Bar
{
public enum MyEnum
{
France,
Belgium,
Brazil,
Switzerland
}
}
sau đó tôi thay đổi nội dung dbml phải có:
<Column Name="ShipCountry" Type="Foo.Bar.MyEnum" DbType="NVarChar(15)" CanBeNull="true" />
này được tạo ra:
private Foo.Bar.MyEnum _ShipCountry;
//...
[Column(Storage="_ShipCountry", DbType="NVarChar(15)", CanBeNull=true)]
public Foo.Bar.MyEnum ShipCountry
{ get {...} set {...} }
Và cuối cùng đã viết truy vấn:
using (DataClasses1DataContext ctx = new DataClasses1DataContext())
{
var qry = from order in ctx.Orders
where order.ShipCountry == Foo.Bar.MyEnum.Brazil
|| order.ShipCountry == Foo.Bar.MyEnum.Belgium
select order;
foreach (var order in qry.Take(10))
{
Console.WriteLine("{0}, {1}", order.OrderID, order.ShipCountry);
}
}
Làm việc tốt; kết quả:
10250, Brazil
10252, Belgium
10253, Brazil
10256, Brazil
10261, Brazil
10287, Brazil
10290, Brazil
10291, Brazil
10292, Brazil
10299, Brazil
Nó hoạt động khi tôi nhận được 3,5 SP1 – Barry
Tôi phải thêm "toàn cầu ::" với 3,5 SP1. Có lẽ nó bởi vì tôi đã thay đổi không gian tên mặc định cho DataContext (Project.Dal) và cũng cho các thực thể (Project.Dal.Entities)? – jrummell