首先A和C肯定是不对的 这里has set是正确的
B和D两个都没错,但既然你问的是“地道”,作为一个第一语言是英语的人,凭我的感觉来说平时用口语跟朋友说话时应该会用D,但书写时若稍微考虑一下,我会选择用B,感觉比较正式.