เขียนโปรแกรมให้สุ่มหยิบ SPUser
มาแสดงผล ทีนี้เกิดปัญหาว่า ไม่มี User ใดที่เข้าเงื่อนไขที่อยากให้แสดงผลเลย ตรวจสอบเงื่อนไขก็ดูไม่มีอะไรผิดปกตินะ แต่สิ่งที่ผิดคือ แหล่งที่ไปดึง User มาตรวจสอบ มีจำนวน User น้อยกว่าที่คาดไว้
เผอิญว่าใน SPWeb
มันมีแหล่งที่ให้สามารถดึง User มาใช้ได้ 3 แหล่งคือ AllUsers
, SiteUsers
, และ Users
ก็เกิดความสับสนว่า จะใช้จากแหล่งใดดี ไปเจอคำอธิบายคำตอบของเรื่องนี้ในกระดานสนทนา MSDN เลยตัดมาสรุปคิดว่าน่าจะใช้ประโยชน์ต่อไปได้
SPWeb.Users
gets the collection of user objects that are explicitly assigned permissions in the Web site . It will not return users who have access through a group.
SPWeb.AllUsers
gets the collection of user objects that represents all users who are either members of the site collection or who have browsed to the site as authenticated members of a domain group in the site. (note the "browsed to" here... adding a AD group to a site does not add the users to AllUsers immediately... they will not be listed here until they have visited the site at least once.)
SPWeb.SiteUsers
gets the collection of all users that belong to the site collection.
สังเกตว่า AllUsers
ก็จะพบแค่ User ที่ผ่านการ EnsureUser
มาแล้วเท่านั้น