2011-08-19 24 views
5

Tôi có mộtlàm thế nào để có được giá trị duy nhất bằng cách sử dụng thực thể khuôn khổ

 table product with colums product_id 
           prodcut_name 
           category_id 

       another table category 
           category_id 
           category_name 

và tôi đang Populating các chi tiết sản phẩm sử dụng datagridview mà làm việc tốt

và tôi cần phải nhận được categoryname cho hàng đã chọn trong datagridview cho rằng tôi đã làm như thế này ....

 private void productGridview_Cellclick(object sender, DataGridViewCellEventArgs e) 
     { 
       string productname = Convert.ToString(selectedRow.Cells["productnam"].Value); 
       var categoryids = from cats in abc.products 
           where cats.product_Name.Equals(productname) 
           select cats.category_Id; 


      var catogynames = from categorytypes in abc.categories 
           where categorytypes.category_Name.Equals(categoryids) 
           select categorytypes.category_Name; 


      string categorynames = catogynames;  

     }        

có một

error : cannot implicitly convert type sysytem.linq.iqueryble<string> to string ... 

những gì tôi cần phải làm gì để có được tên loại duy nhất cho ô đã chọn trong cột productnam productgridview

bất cứ đề nghị .. pls ..

cảm ơn nhiều ....

Modified Mã : có một lỗi:

not supported exception: 

Unable to create a constant value of type 'System.Object'. Only primitive types ('such as Int32, String, and Guid') are supported in this context. 

Trả lời

7

truy vấn của bạn được trả lại một đối tượng truy vấn mà được như một bộ sưu tập. Bạn có thể sử dụng First, FirstOrDefault, Single hoặc SingleOrDefault để truy xuất mục đầu tiên hoặc đơn lẻ từ truy vấn tương ứng.

var categoryid = (from cats in abc.products 
        where cats.product_Name.Equals(productname) 
        select cats.category_Id).SingleOrDefault(); 


string categoryname = (from categorytypes in abc.categories 
         where categorytypes.category_Name.Equals(categoryid) 
         select categorytypes.category_Name).SingleOrDefault(); 
+0

thanq .. bạn có thể làm thêm một ưu tiên cho tôi không .... Có thể xác định mối quan hệ ánh xạ theo lập trình bằng cách sử dụng thực thể và C# .. Tôi muốn chỉ định khóa ngoại cho một bảng theo chương trình .. là nó có thể .. do u có bất kỳ ý tưởng ..... –

+0

có một lỗi bạn sẽ thấy mã sửa đổi của tôi –

+0

bạn sẽ xin hãy xem câu hỏi của tôi .... –

0

vấn đề của bạn với đúc là ở đây

string categorynames = catogynames; 

catogynamesIQueryble. Bạn có thể làm điều gì đó như thế này,

List<String> categorynames = catogynames.ToList(); 

Hoặc bạn có thể lặp qua catogynames.

P.S vui lòng xem lại tên biến của bạn: D.

+0

làm thế nào tôi có thể làm điều đó bởi vì tôi muốn gửi một giá trị cho biểu mẫu khác phụ thuộc vào ô dữ liệu datagridview nhấp vào –

+0

cách bạn có thể làm gì? – Incognito

+0

tôi có thể sử dụng vòng lặp foreach để nhận các catogynames đơn lẻ không ... –

Các vấn đề liên quan